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