import lombok.Getter;
import lombok.ToString;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@Getter
@ToString
public class CurrentMember extends User {
private Long memberId;
private String email;
private String memberName;
private String memberPhone;
private LocalDate memberBirthDay;
private boolean memberAlarm;
private boolean memberPush;
private MemberStatus memberStatus;
private MemberGradeType memberGrade;
private String memberImageUri;
private String contactEmail;
private LocalDateTime lastLoginAt;
private String memberToken;
private String emailValidToken;
private Locale memberLocale;
private Set<String> memberRoles;
private boolean storeOwner;
private Long storeOwnerId;
private String bankAccountName;
private String bankAccountNumber;
private BankAccountCompanyType bankAccountCompany;
private String companyRegisterNumber;
private String contractUri;
private MemberStatus storeOwnerStatus;
public CurrentMember(String username, String password, Collection<? extends GrantedAuthority> authorities, Member member) {
super(username, password, authorities);
memberId = member.getMemberId();
email = member.getEmail();
memberName = member.getMemberName();
memberPhone = member.getMemberPhone();
memberBirthDay = member.getMemberBirthDay();
memberAlarm = member.isMemberAlarm();
memberPush = member.isMemberPush();
memberStatus = member.getMemberStatus();
memberGrade = member.getMemberGrade();
memberImageUri = member.getMemberImageUri();
contactEmail = member.getContactEmail();
lastLoginAt = member.getLastLoginAt();
memberToken = member.getMemberToken();
emailValidToken = member.getEmailValidToken();
memberLocale = member.getMemberLocale();
memberRoles = CollectionUtil.asStream(authorities)
.map(grantedAuthority -> ((GrantedAuthority) grantedAuthority).getAuthority())
.collect(Collectors.toSet());
storeOwner = false;
if (Objects.nonNull(member.getStoreOwner())) {
storeOwner = true;
storeOwnerId = member.getStoreOwner().getStoreOwnerId();
bankAccountName = member.getStoreOwner().getBankAccountName();
bankAccountNumber = member.getStoreOwner().getBankAccountNumber();
bankAccountCompany = member.getStoreOwner().getBankAccountCompany();
companyRegisterNumber = member.getStoreOwner().getCompanyRegisterNumber();
contractUri = member.getStoreOwner().getKakaoApi();
storeOwnerStatus = member.getStoreOwner().getStoreOwnerStatus();
}
}
}