|
@ -107,6 +107,14 @@ public class WlyyTokenGranter implements TokenGranter {
|
|
|
requestFactory,
|
|
|
userDetailsService
|
|
|
));
|
|
|
tokenGranters.put(FamilyTokenGranter.GRANT_TYPE,
|
|
|
new FamilyTokenGranter(
|
|
|
authenticationManager,
|
|
|
tokenServices,
|
|
|
clientDetailsService,
|
|
|
requestFactory,
|
|
|
userDetailsService
|
|
|
));
|
|
|
}
|
|
|
|
|
|
public OAuth2AccessToken grant(String grantType, TokenRequest tokenRequest) {
|
|
@ -511,6 +519,62 @@ public class WlyyTokenGranter implements TokenGranter {
|
|
|
throw new InvalidGrantException("User account is locked");
|
|
|
}
|
|
|
|
|
|
// parameters.put("password",userDetails.getPassword());
|
|
|
Authentication userAuth = new UsernamePasswordAuthenticationToken(username,userDetails.getPassword(), this.authoritiesMapper.mapAuthorities(userDetails.getAuthorities()));
|
|
|
((AbstractAuthenticationToken) userAuth).setDetails(parameters);
|
|
|
OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);
|
|
|
return new OAuth2Authentication(storedOAuth2Request, userAuth);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 家人登录
|
|
|
*/
|
|
|
public static class FamilyTokenGranter extends AbstractTokenGranter {
|
|
|
private static final String GRANT_TYPE = "family";
|
|
|
|
|
|
private final AuthenticationManager authenticationManager;
|
|
|
private final UserDetailsService userDetailsService;
|
|
|
private GrantedAuthoritiesMapper authoritiesMapper = new NullAuthoritiesMapper();
|
|
|
|
|
|
public FamilyTokenGranter(AuthenticationManager authenticationManager,
|
|
|
AuthorizationServerTokenServices tokenServices,
|
|
|
ClientDetailsService clientDetailsService,
|
|
|
OAuth2RequestFactory requestFactory,
|
|
|
UserDetailsService userDetailsService) {
|
|
|
this(authenticationManager, tokenServices, clientDetailsService, requestFactory, userDetailsService, GRANT_TYPE);
|
|
|
}
|
|
|
|
|
|
protected FamilyTokenGranter(AuthenticationManager authenticationManager,
|
|
|
AuthorizationServerTokenServices tokenServices,
|
|
|
ClientDetailsService clientDetailsService,
|
|
|
OAuth2RequestFactory requestFactory,
|
|
|
UserDetailsService userDetailsService,
|
|
|
String grantType) {
|
|
|
super(tokenServices, clientDetailsService, requestFactory, grantType);
|
|
|
this.authenticationManager = authenticationManager;
|
|
|
this.userDetailsService = userDetailsService;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
|
|
|
|
|
|
Map<String, String> parameters = new LinkedHashMap<String, String>(tokenRequest.getRequestParameters());
|
|
|
String encdata = parameters.get("encdata");
|
|
|
encdata = AES.decrypt(encdata);
|
|
|
//居民id 家人手机号/家人身份证 家人id 以冒号组合,如:
|
|
|
//6e9d7cdb05b346a3a992739b9810319c:13559485277:3ae2673512154d5280d1dcf5ffa5626d
|
|
|
String data[] = encdata.split(":");
|
|
|
String username = data[1];
|
|
|
|
|
|
SaltUser userDetails = (SaltUser)userDetailsService.loadUserByUsername(encdata);
|
|
|
if (!userDetails.isEnabled()) {
|
|
|
throw new InvalidGrantException("User is disabled");
|
|
|
}
|
|
|
if (!userDetails.isAccountNonLocked()) {
|
|
|
throw new InvalidGrantException("User account is locked");
|
|
|
}
|
|
|
|
|
|
// parameters.put("password",userDetails.getPassword());
|
|
|
Authentication userAuth = new UsernamePasswordAuthenticationToken(username,userDetails.getPassword(), this.authoritiesMapper.mapAuthorities(userDetails.getAuthorities()));
|
|
|
((AbstractAuthenticationToken) userAuth).setDetails(parameters);
|