auth fixed
This commit is contained in:
parent
787aa97f50
commit
a42c875b2c
@ -2,32 +2,36 @@ import { useEffect } from "react";
|
||||
import { useAuth } from "./useAuth";
|
||||
|
||||
export const useUser = () => {
|
||||
const { token, user, setUser } = useAuth();
|
||||
console.log(user);
|
||||
const { token, user, setUser, logout } = useAuth();
|
||||
|
||||
useEffect(() => {
|
||||
const fetchUser = async () => {
|
||||
if (!token || user) return;
|
||||
|
||||
try {
|
||||
console.log("Fetching user with token:", token);
|
||||
const response = await fetch("http://localhost:3000/api/users/me", {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
});
|
||||
|
||||
if (!response.ok) throw new Error("Failed to fetch user");
|
||||
if (!response.ok) {
|
||||
const errorText = await response.text();
|
||||
throw new Error(`Failed to fetch user: ${errorText}`);
|
||||
}
|
||||
|
||||
const userData = await response.json();
|
||||
console.log("Fetched user data:", userData);
|
||||
setUser(userData);
|
||||
} catch (error) {
|
||||
console.error("Error fetching user:", error);
|
||||
useAuth.getState().logout();
|
||||
logout();
|
||||
}
|
||||
};
|
||||
|
||||
fetchUser();
|
||||
}, [token, user, setUser]);
|
||||
}, [token, user, setUser, logout]);
|
||||
|
||||
return user;
|
||||
};
|
||||
|
||||
@ -51,7 +51,13 @@ export class AuthService {
|
||||
}
|
||||
|
||||
async login(loginDto: LoginDto) {
|
||||
const payload = { email: loginDto.email, password: loginDto.password };
|
||||
const user = await this.validateUser(loginDto.email, loginDto.password);
|
||||
const payload = {
|
||||
email: loginDto.email,
|
||||
password: loginDto.password,
|
||||
sub: user.id,
|
||||
role: user.role,
|
||||
};
|
||||
console.log(payload);
|
||||
return {
|
||||
access_token: this.jwtService.sign(payload),
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Injectable, ExecutionContext } from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
|
||||
@Injectable()
|
||||
export class JwtAuthGuard extends AuthGuard('jwt') {}
|
||||
export class JwtAuthGuard extends AuthGuard('jwt') {
|
||||
handleRequest(err, user, info, context: ExecutionContext) {
|
||||
console.log('JWT Auth Guard:', { err, user, info });
|
||||
return super.handleRequest(err, user, info, context);
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@ export class JwtStrategy extends PassportStrategy(Strategy) {
|
||||
}
|
||||
|
||||
async validate(payload: any) {
|
||||
console.log('payload', payload);
|
||||
const user = await this.prisma.user.findUnique({
|
||||
where: { id: payload.sub },
|
||||
select: {
|
||||
@ -28,6 +29,7 @@ export class JwtStrategy extends PassportStrategy(Strategy) {
|
||||
role: true,
|
||||
},
|
||||
});
|
||||
console.log('user found:', user);
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,8 +37,10 @@ export class UsersController {
|
||||
@Get('me')
|
||||
@UseGuards(JwtAuthGuard)
|
||||
async getProfile(@GetUser() user: User) {
|
||||
console.log('Fetching profile for user:', user);
|
||||
const { password, ...userWithoutPassword } =
|
||||
await this.usersService.findById(user.id);
|
||||
console.log('user profile', userWithoutPassword);
|
||||
return userWithoutPassword;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user