개발이 좋아서/Spring이 좋아서

[Backend] - 로그인 및 회원가입(로그인_dto, model, vo)

zoaseo 2022. 10. 25. 14:27

1) dto

SignInRes

package clonestudy.clonestudy.login.dto;

import lombok.Data;

@Data
public class SignInRes {

    private int id;

    private String name;

    private String accesstoken;

    private String refreshtoken;

    private String decodetoken;

}

ValidateJwt

package clonestudy.clonestudy.login.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ValidateJwt {
    @ApiModelProperty(hidden = true)
    private String id;

    @ApiModelProperty(hidden = true)
    private String hashCode;

    @ApiModelProperty(hidden = true)
    private List<String> managedSiteIds;

    public ValidateJwt(String id) {
        this.id = id;
    }

    public ValidateJwt(String id, String hashCode) {
        this.id = id;
        this.hashCode = hashCode;
    }
}

2) model

AccessToken

package clonestudy.clonestudy.login.model;

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Comment;
import org.springframework.stereotype.Component;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;

@Component
@Getter
@NoArgsConstructor
@Entity
@Table(name = "access_token")

public class AccessToken {
    @Id
    @Column(name = "access_token", nullable = false, length = 300, unique = true)
    @Comment("사용자 jwt access_token")
    private String accessToken;

    @Builder
    public AccessToken(String accessToken) {
        this.accessToken = accessToken;
    }
}

LoginLog

package clonestudy.clonestudy.login.model;



/**로그인 로그 테이블**/

import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Comment;

import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;

@Entity
@Table(name = "login_log")
@IdClass(LoginLog.ID.class)
@Data
@NoArgsConstructor
public class LoginLog {
    @Id
    @Column(name = "login_datetime", nullable = false, columnDefinition = "DATETIME DEFAULT NOW()")
    @Comment("로그인 요청 시간")
    private LocalDateTime loginDateTime;

    @Id
    @Column(name = "member_email", nullable = false, length = 30)
    @Comment("로그인 요청 email")
    private String memberEmail;

    @Column(name = "status_code", nullable = false, length = 10)
    @Comment("로그인 요청 결과 코드번호")
    private String statusCode;

    @Column(name = "status_code_name", nullable = false, length = 20)
    @Comment("로그인 요청 결과 코드명")
    private String statusCodeName;

    @Column(name = "status_message", nullable = false, length = 100)
    @Comment("로그인 요청 결과 메세지")
    private String statusMessage;

    @Column(name = "member_ip", nullable = false, length = 20)
    @Comment("로그인 요청 IP")
    private String memberIP;

    @Data
    public static class ID implements Serializable {
        private LocalDateTime loginDateTime;
        private String memberEmail;
    }

    @Builder
    public LoginLog(LocalDateTime loginDateTime, String memberEmail, String statusCode, String statusCodeName, String statusMessage, String memberIP){
        this.loginDateTime = loginDateTime;
        this.memberEmail = memberEmail;
        this.statusCode = statusCode;
        this.statusCodeName = statusCodeName;
        this.statusMessage = statusMessage;
        this.memberIP = memberIP;
    }
}

3) vo

LoginVO

package clonestudy.clonestudy.login.vo;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class LoginLogVO {
    private String firstDateTime;
    private String endDateTime;
    private String memberEmail;
}

LoginVO

package clonestudy.clonestudy.login.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;

@Data
@AllArgsConstructor
public class LoginVO {
    @ApiModelProperty("이메일")
    private String email;

    @ApiModelProperty("비밀번호")
    private String pwd;
}