com.fivefaces.structureclient.config.security.User Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of common-structure-client Show documentation
Show all versions of common-structure-client Show documentation
structure Client for Five Faces
package com.fivefaces.structureclient.config.security;
import com.nimbusds.jose.shaded.json.JSONArray;
import com.nimbusds.jwt.JWT;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.security.authentication.BadCredentialsException;
import java.text.ParseException;
import java.util.List;
import java.util.stream.Collectors;
@Getter
@AllArgsConstructor
public class User {
private final String oid;
private final String username;
private final String firstName;
private final String lastName;
private final String email;
private final List roles;
private final UserType userType;
public static User fromJwt(JWT parsedJwt, UserType denomination) {
try {
List roles = ((JSONArray) parsedJwt.getJWTClaimsSet().getClaim("roles")).stream()
.map(o -> (String) o).collect(Collectors.toList());
return new User(
(String) parsedJwt.getJWTClaimsSet().getClaim("oid"),
(String) parsedJwt.getJWTClaimsSet().getClaim("preferred_username"),
(String) parsedJwt.getJWTClaimsSet().getClaim("given_name"),
(String) parsedJwt.getJWTClaimsSet().getClaim("family_name"),
(String) parsedJwt.getJWTClaimsSet().getClaim("email"),
roles,
denomination
);
} catch (ParseException e) {
throw new BadCredentialsException("Could not parse JWT token", e);
}
}
public static User unmanned(String token) {
String oid = "UNMANNED-" + token;
return new User(
oid, oid, oid, oid, oid,
List.of("UNMANNED"),
UserType.UNMANNED
);
}
}