개발이 좋아서/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;
}