package cn.exrick.xboot.core.config.security; import cn.exrick.xboot.core.common.constant.MemberConstant; import cn.exrick.xboot.core.entity.Member; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * @author Exrickx */ @Slf4j public class SecurityMemberDetails extends Member implements UserDetails { private static final long serialVersionUID = 1L; private String permissions; public SecurityMemberDetails(Member member) { if (member != null) { this.setUsername(member.getUsername()); this.setPassword(member.getPassword()); this.setStatus(member.getStatus()); this.permissions = member.getPermissions(); } } /** * 添加用户拥有的权限和角色 * @return */ @Override public Collection getAuthorities() { List authorityList = new ArrayList<>(); if (StrUtil.isBlank(permissions)) { return authorityList; } String[] as = permissions.split(","); for (String a : as) { authorityList.add(new SimpleGrantedAuthority(a)); } return authorityList; } /** * 账户是否过期 * @return */ @Override public boolean isAccountNonExpired() { return true; } /** * 是否禁用 * @return */ @Override public boolean isAccountNonLocked() { return MemberConstant.MEMBER_STATUS_LOCK.equals(this.getStatus()) ? false : true; } /** * 密码是否过期 * @return */ @Override public boolean isCredentialsNonExpired() { return true; } /** * 是否启用 * @return */ @Override public boolean isEnabled() { return MemberConstant.MEMBER_STATUS_NORMAL.equals(this.getStatus()) ? true : false; } }