use of io.gravitee.management.model.NewExternalUserEntity in project gravitee-management-rest-api by gravitee-io.
the class AuthenticationSuccessListener method onApplicationEvent.
@Override
public void onApplicationEvent(AuthenticationSuccessEvent event) {
final UserDetails details = (UserDetails) event.getAuthentication().getPrincipal();
try {
UserEntity registeredUser = userService.findByUsername(details.getUsername(), false);
// Principal username is the technical identifier of the user
details.setUsername(registeredUser.getId());
} catch (UserNotFoundException unfe) {
final NewExternalUserEntity newUser = new NewExternalUserEntity();
newUser.setUsername(details.getUsername());
newUser.setSource(details.getSource());
newUser.setSourceId(details.getSourceId());
newUser.setFirstname(details.getFirstname());
newUser.setLastname(details.getLastname());
newUser.setEmail(details.getEmail());
boolean addDefaultRole = false;
if (event.getAuthentication().getAuthorities() == null || event.getAuthentication().getAuthorities().isEmpty()) {
addDefaultRole = true;
}
UserEntity createdUser = userService.create(newUser, addDefaultRole);
// Principal username is the technical identifier of the user
details.setUsername(createdUser.getId());
if (!addDefaultRole) {
addRole(RoleScope.MANAGEMENT, createdUser.getId(), event.getAuthentication().getAuthorities());
addRole(RoleScope.PORTAL, createdUser.getId(), event.getAuthentication().getAuthorities());
}
}
userService.connect(details.getUsername());
}
use of io.gravitee.management.model.NewExternalUserEntity in project gravitee-management-rest-api by gravitee-io.
the class GoogleAuthenticationResource method processUser.
private Response processUser(final Map<String, Object> userInfo) {
String username = (String) userInfo.get("email");
// set user to Authentication Context
UserDetails userDetails = new UserDetails(username, "", Collections.emptyList());
userDetails.setEmail(username);
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()));
try {
UserEntity registeredUser = userService.findByUsername(username, false);
userDetails.setUsername(registeredUser.getId());
} catch (UserNotFoundException unfe) {
final NewExternalUserEntity newUser = new NewExternalUserEntity();
newUser.setUsername(username);
newUser.setSource(AuthenticationSource.GOOGLE.getName());
newUser.setSourceId(userInfo.get("sub").toString());
newUser.setFirstname(userInfo.get("given_name").toString());
newUser.setLastname(userInfo.get("family_name").toString());
newUser.setEmail(username);
UserEntity createdUser = userService.create(newUser, true);
userDetails.setUsername(createdUser.getId());
}
// User refresh
UpdateUserEntity user = new UpdateUserEntity();
user.setUsername(username);
user.setPicture(userInfo.get("picture").toString());
userService.update(user);
return connectUser(userDetails.getUsername());
}
use of io.gravitee.management.model.NewExternalUserEntity in project gravitee-management-rest-api by gravitee-io.
the class GitHubAuthenticationResource method processUser.
private Response processUser(final Map<String, Object> userInfo) {
String username = (String) userInfo.get("email");
if (username == null) {
throw new BadRequestException("No public email linked to your GitHub account");
}
// set user to Authentication Context
UserDetails userDetails = new UserDetails(username, "", Collections.emptyList());
userDetails.setEmail(username);
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()));
try {
UserEntity registeredUser = userService.findByUsername(username, false);
userDetails.setUsername(registeredUser.getId());
} catch (UserNotFoundException unfe) {
final NewExternalUserEntity newUser = new NewExternalUserEntity();
newUser.setUsername(username);
newUser.setSource(AuthenticationSource.GITHUB.getName());
newUser.setSourceId(userInfo.get("id").toString());
String[] partNames = userInfo.get("name").toString().split(" ");
newUser.setLastname(partNames[0]);
newUser.setFirstname(partNames[1]);
newUser.setEmail(username);
UserEntity createdUser = userService.create(newUser, true);
userDetails.setUsername(createdUser.getId());
}
// User refresh
UpdateUserEntity user = new UpdateUserEntity();
user.setUsername(username);
user.setPicture(userInfo.get("avatar_url").toString());
userService.update(user);
return connectUser(userDetails.getUsername());
}
Aggregations