oauth2.1 flow test
parent
1f77e80ecb
commit
a2110804be
|
@ -1,99 +1,40 @@
|
||||||
package com.monkeyk.sos.domain.shared.security;
|
package com.monkeyk.sos.domain.shared.security;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||||
import com.monkeyk.sos.domain.user.Privilege;
|
import com.monkeyk.sos.domain.user.Privilege;
|
||||||
import com.monkeyk.sos.domain.user.User;
|
import com.monkeyk.sos.domain.user.User;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Shengzhao Li
|
* @author Shengzhao Li
|
||||||
*/
|
*/
|
||||||
public class SOSUserDetails implements UserDetails {
|
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "@class")
|
||||||
|
public class SOSUserDetails extends org.springframework.security.core.userdetails.User {
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 3957586021470480642L;
|
private static final long serialVersionUID = 3957586021470480642L;
|
||||||
|
|
||||||
protected static final String ROLE_PREFIX = "ROLE_";
|
public static final String ROLE_PREFIX = "ROLE_";
|
||||||
protected static final GrantedAuthority DEFAULT_USER_ROLE = new SimpleGrantedAuthority(ROLE_PREFIX + Privilege.USER.name());
|
|
||||||
|
|
||||||
protected User user;
|
public static final GrantedAuthority DEFAULT_USER_ROLE = new SimpleGrantedAuthority(ROLE_PREFIX + Privilege.USER.name());
|
||||||
|
|
||||||
protected List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
|
|
||||||
|
|
||||||
public SOSUserDetails() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public SOSUserDetails(User user) {
|
|
||||||
this.user = user;
|
|
||||||
initialAuthorities();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initialAuthorities() {
|
|
||||||
//Default, everyone have it
|
|
||||||
this.grantedAuthorities.add(DEFAULT_USER_ROLE);
|
|
||||||
|
|
||||||
final List<Privilege> privileges = user.privileges();
|
|
||||||
for (Privilege privilege : privileges) {
|
|
||||||
this.grantedAuthorities.add(new SimpleGrantedAuthority(ROLE_PREFIX + privilege.name()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return authorities, more information see {@link #initialAuthorities()}
|
* @since 3.0.0
|
||||||
*
|
|
||||||
* @return Collection of GrantedAuthority
|
|
||||||
*/
|
*/
|
||||||
@Override
|
protected String userGuid;
|
||||||
public Collection<GrantedAuthority> getAuthorities() {
|
|
||||||
return this.grantedAuthorities;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPassword() {
|
|
||||||
return user.password();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUsername() {
|
|
||||||
return user.username();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAccountNonExpired() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAccountNonLocked() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isCredentialsNonExpired() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return user.enabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
public User user() {
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
public SOSUserDetails(User user) {
|
||||||
public String toString() {
|
super(user.username(), user.password(), user.enabled(),
|
||||||
final StringBuilder sb = new StringBuilder();
|
true, true, true, user.generateAuthorities());
|
||||||
sb.append("{user=").append(user);
|
this.userGuid = user.guid();
|
||||||
sb.append('}');
|
|
||||||
return sb.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUserGuid() {
|
||||||
|
return userGuid;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,12 +1,15 @@
|
||||||
package com.monkeyk.sos.domain.user;
|
package com.monkeyk.sos.domain.user;
|
||||||
|
|
||||||
import com.monkeyk.sos.domain.AbstractDomain;
|
import com.monkeyk.sos.domain.AbstractDomain;
|
||||||
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import static com.monkeyk.sos.domain.shared.security.SOSUserDetails.DEFAULT_USER_ROLE;
|
||||||
|
import static com.monkeyk.sos.domain.shared.security.SOSUserDetails.ROLE_PREFIX;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* table: user_
|
* table: user_
|
||||||
|
@ -228,4 +231,23 @@ public class User extends AbstractDomain {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权限值
|
||||||
|
*
|
||||||
|
* @return GrantedAuthority set
|
||||||
|
* @since 3.0.0
|
||||||
|
*/
|
||||||
|
public Set<GrantedAuthority> generateAuthorities() {
|
||||||
|
Set<GrantedAuthority> authorities = new HashSet<>();
|
||||||
|
//Default, everyone include
|
||||||
|
authorities.add(DEFAULT_USER_ROLE);
|
||||||
|
|
||||||
|
final List<Privilege> privileges = this.privileges();
|
||||||
|
for (Privilege privilege : privileges) {
|
||||||
|
authorities.add(new SimpleGrantedAuthority(ROLE_PREFIX + privilege.name()));
|
||||||
|
}
|
||||||
|
return authorities;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -55,7 +55,7 @@ public class UserServiceImpl implements UserService {
|
||||||
// return loadOauthUserJsonDto((OAuth2Authentication) authentication);
|
// return loadOauthUserJsonDto((OAuth2Authentication) authentication);
|
||||||
// } else {
|
// } else {
|
||||||
final SOSUserDetails userDetails = (SOSUserDetails) principal;
|
final SOSUserDetails userDetails = (SOSUserDetails) principal;
|
||||||
return new UserJsonDto(userRepository.findByGuid(userDetails.user().guid()));
|
return new UserJsonDto(userRepository.findByGuid(userDetails.getUserGuid()));
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue