
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.cms.mber.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author : takensoft
* @since : 2024.04.01
* @modification
* since | author | description
* 2024.04.01 | takensoft | 최초 등록
*
* 회원 정보 관련 VO
* UserDetails : security 사용을 위해 상속
* Serializable : 직렬화를 위해 상속
*/
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class MberVO implements UserDetails, Serializable {
private static final long serialVersionUID = 1L;
private String mbrId; // 회원 아이디
private String lgnId; // 로그인 아이디
private String mbrNm; // 회원 이름
private String ncnm; // 닉네임
private String pswd; // 비밀번호
private String mblTelno; // 휴대폰번호
private String telno; // 전화번호
private String eml; // 이메일
private String zip; // 우편번호
private String addr; // 주소
private String daddr; // 상세주소
private String mbrStts; // 회원상태 0: 탈퇴, 1: 승인, 2: 승인대기, 3: 차단
private boolean useYn; // 사용여부
private String cntrlDt; // 차단일
private String cntrlRsn; // 차단사유
private String smsRcptnAgreYn; // 문자수신여부 0: 거부, 1: 허용
private String emlRcptnAgreYn; // 이메일수신여부 0: 거부, 1: 허용
private String prvcRlsYn; // 개인정보공개여부 0: 거부, 1: 허용
private String mbrType; // 회원형태 S: 시스템, K: 카카오, N: 네이버, G: 구글, F: 페이스북
private String pswdChgDt; // 비밀번호 변경일
private String frstRegIp; // 최초등록 아이디
private String sysPvsnYn; // 시스템 제공 여부 -> 시스템에서 제공되는 데이터는 사용자가 제거하지 못하도록 하기 위한 설정값 0: 시스템, 1: 사용자
private String rgtr; // 등록자
private String regDt; // 등록일
private String mdfr; // 수정자
private String mdfcnDt; // 수정일
@JsonIgnore
private List<MberAuthorVO> authorList = new ArrayList<MberAuthorVO>(); // 권한 정보
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
if(this.authorList.size() > 0) {
return this.authorList.stream().map(auth -> new SimpleGrantedAuthority(
auth.getAuthrtCd()
)).collect(Collectors.toList());
} else {
return null;
}
}
@Override
public String getPassword() {
return this.pswd;
}
@Override
public String getUsername() {
return this.lgnId;
}
@Override
public boolean isAccountNonExpired() {
return this.useYn;
}
@Override
public boolean isAccountNonLocked() {
return this.useYn;
}
@Override
public boolean isCredentialsNonExpired() {
return this.useYn;
}
@Override
public boolean isEnabled() {
return this.useYn;
}
// JWT 필터용 생성자
public MberVO(String mbrId, String lgnId, List<MberAuthorVO> authorList) {
this.mbrId = mbrId;
this.lgnId = lgnId;
this.authorList = authorList;
}
// 토큰 재발행용
public MberVO(String mbrId, String lgnId, String mbrNm, List<MberAuthorVO> authorList) {
this.mbrId = mbrId;
this.lgnId = lgnId;
this.mbrNm = mbrNm;
this.authorList = authorList;
}
}