Changeset 3727852


Ignore:
Timestamp:
01/26/26 17:59:16 (6 months ago)
Author:
Filip Gavrilovski <filipgavrilovski28@…>
Branches:
main
Children:
484dc3f
Parents:
4022db1
Message:

modify user response dto to store other relevant user data

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/dto/UserResponseDto.java

    r4022db1 r3727852  
    22
    33import com.ukim.finki.develop.finkwave.model.Role;
     4import jakarta.annotation.Nullable;
     5import lombok.Builder;
    46
     7@Builder
    58public record UserResponseDto(
     9        String fullname,
    610        String username,
     11        @Nullable String profilePhoto,
    712        Role role){
    813}
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/AuthService.java

    r4022db1 r3727852  
    6565        User user = userRepository.findByUsername(username)
    6666                .orElseThrow(() -> new RuntimeException("Invalid credentials"));
    67         return new UserResponseDto(user.getUsername(), user.getRole());
     67
     68        return userResponseFromUser(user);
    6869    }
    6970
     
    110111        RefreshToken refreshToken = refreshTokenService.createRefreshToken(user);
    111112
    112         UserResponseDto userResponseDto = new UserResponseDto(user.getUsername(), user.getRole());
     113        UserResponseDto userResponseDto = userResponseFromUser(user);
     114
    113115        addTokensToResponse(response, refreshToken, accessToken);
    114116        return userResponseDto;
     
    135137        addAccessCookieToResponse(response, accessToken);
    136138    }
     139
     140    private UserResponseDto userResponseFromUser(User user){
     141        return UserResponseDto.builder()
     142                .fullname(user.getFullName())
     143                .username(user.getUsername())
     144                .profilePhoto(user.getProfilePhoto())
     145                .role(user.getRole())
     146                .build();
     147    }
    137148}
  • frontend/src/Login.tsx

    r4022db1 r3727852  
    33import axiosInstance, { scheduleTokenRefresh } from "./api/axiosInstance";
    44import { useAuth } from "./context/authContext";
    5 import type { UserResponse } from "./types";
     5import type { User } from "./types";
    66
    77const Login = () => {
     
    1616                try {
    1717                        const response = await axiosInstance.post<{
    18                                 user: UserResponse;
     18                                user: User;
    1919                                tokenExpiresIn: number;
    2020                        }>("/auth/login", { username, password });
     
    6565                                <button
    6666                                        type="submit"
    67                                         className="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg text-sm font-medium transition-colors duration-200 w-full"
     67                                        className="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg text-sm font-medium transition-colors duration-200 w-full cursor-pointer"
    6868                                >
    6969                                        Login
  • frontend/src/Register.tsx

    r4022db1 r3727852  
    33import axiosInstance, { scheduleTokenRefresh } from "./api/axiosInstance";
    44import { useAuth } from "./context/authContext";
    5 import type { User, UserResponse } from "./types";
     5import type { User } from "./types";
    66
    77const Register = () => {
     
    1717        const handleRegister = async (e: React.FormEvent) => {
    1818                e.preventDefault();
    19                 const newUser: User = {
    20                         username,
    21                         fullName: fullname,
    22                         email: email,
    23                         profilePhoto: profilePhoto,
    24                 };
    2519                try {
    2620                        const response = await axiosInstance.post<{
    27                                 user: UserResponse;
     21                                user: User;
    2822                                tokenExpiresIn: number;
    2923                        }>("/auth/register", {
     
    3529                        });
    3630                        scheduleTokenRefresh(response.data.tokenExpiresIn);
    37                         setUser(newUser);
    38                         // todo
    39                         // setUser(response.data.user);
     31                        setUser(response.data.user);
    4032                        navigate("/");
    4133                } catch (error) {
     
    111103                                <button
    112104                                        type="submit"
    113                                         className="w-full bg-blue-500 text-white p-2 rounded hover:bg-blue-600"
     105                                        className="w-full bg-blue-500 text-white p-2 rounded hover:bg-blue-600 cursor-pointer"
    114106                                        onClick={(e: React.MouseEvent<HTMLButtonElement>) =>
    115107                                                handleRegister(e)
  • frontend/src/types.ts

    r4022db1 r3727852  
    1 export interface UserResponse {
    2         username: string;
    3         role: "ADMIN" | "NONADMIN";
    4 }
    5 
    61export interface User {
    72        username: string;
    83        fullName: string;
    9         email: string;
     4        email?: string;
    105        profilePhoto?: string | null;
    116        role?: "ADMIN" | "NONADMIN";
Note: See TracChangeset for help on using the changeset viewer.