allfree-springboot-backend / src / main / java / com / allfree / allfreespringbackend / auth / dto / LoginResponseDTO.java
LoginResponseDTO.java
Raw
package com.allfree.allfreespringbackend.auth.dto;

import com.allfree.allfreespringbackend.auth.security.UserDetailsImpl;
import com.allfree.allfreespringbackend.common.dto.CommonResponseDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;

import java.util.ArrayList;

@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LoginResponseDTO extends CommonResponseDTO {
    @JsonProperty("token")
    private String token;

    @JsonProperty("userDetails")
    private UserDetailsResponseDTO userDetailsResponseDTO;

    private final String type = "Bearer";

    public static LoginResponseDTO forFailure(final String message) {
        var response = new LoginResponseDTO();
        response.setError(message);
        return response;
    }

    private void setError(String message) {
    }

    public static LoginResponseDTO fromUserDetailsImpl(final UserDetailsImpl userDetails, final String token) {
        var userData = UserDetailsResponseDTO.builder()
                .id(userDetails.getUser().getId())
                .email(userDetails.getUser().getEmail())
                .firstname(userDetails.getUser().getFirstName())
                .lastname(userDetails.getUser().getLastName())
                .username(userDetails.getUser().getUsername())
                .roles(new ArrayList<>(userDetails.getUser().getRoles()))
                .build();

        return LoginResponseDTO.builder()
                .token(token)
                .userDetailsResponseDTO(userData)
                .build();
    }
}