Search in sources :

Example 1 with VortoUser

use of org.eclipse.vorto.repository.web.security.VortoUser in project vorto by eclipse.

the class HomeController method getUser.

@SuppressWarnings("unchecked")
@ApiOperation(value = "Returns the currently logged in User")
@ApiResponses(value = { @ApiResponse(code = 401, message = "Unauthorized"), @ApiResponse(code = 200, message = "OK") })
@RequestMapping(value = { "/user", "/me" }, method = RequestMethod.GET)
public ResponseEntity<Map<String, String>> getUser(Principal user, final HttpServletRequest request) {
    Map<String, String> map = new LinkedHashMap<>();
    if (user == null)
        return new ResponseEntity<Map<String, String>>(map, HttpStatus.UNAUTHORIZED);
    for (GrantedAuthority authority : SecurityContextHolder.getContext().getAuthentication().getAuthorities()) {
        map.put("role", authority.getAuthority());
    }
    if (user instanceof OAuth2Authentication) {
        OAuth2Authentication oauth2User = (OAuth2Authentication) user;
        map.put("name", oauth2User.getName());
        User registeredUser = userRepository.findByUsername(oauth2User.getName());
        if (registeredUser != null) {
            map.put("email", registeredUser.getEmail());
            map.put("isRegistered", Boolean.toString(true));
        } else {
            map.put("email", ((Map<String, String>) oauth2User.getUserAuthentication().getDetails()).get("email"));
            map.put("isRegistered", Boolean.toString(false));
        }
        Map<String, String> userDetails = ((Map<String, String>) oauth2User.getUserAuthentication().getDetails());
        map.put("loginType", userDetails.get(LOGIN_TYPE));
    } else {
        VortoUser vortoUser = (VortoUser) ((UsernamePasswordAuthenticationToken) user).getPrincipal();
        map.put("name", vortoUser.getUsername());
        map.put("email", vortoUser.getEmail());
        map.put("isRegistered", "true");
        map.put("loginType", "default");
    }
    return new ResponseEntity<Map<String, String>>(map, HttpStatus.OK);
}
Also used : ResponseEntity(org.springframework.http.ResponseEntity) User(org.eclipse.vorto.repository.account.impl.User) VortoUser(org.eclipse.vorto.repository.web.security.VortoUser) VortoUser(org.eclipse.vorto.repository.web.security.VortoUser) GrantedAuthority(org.springframework.security.core.GrantedAuthority) OAuth2Authentication(org.springframework.security.oauth2.provider.OAuth2Authentication) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

ApiOperation (io.swagger.annotations.ApiOperation)1 ApiResponses (io.swagger.annotations.ApiResponses)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 User (org.eclipse.vorto.repository.account.impl.User)1 VortoUser (org.eclipse.vorto.repository.web.security.VortoUser)1 ResponseEntity (org.springframework.http.ResponseEntity)1 GrantedAuthority (org.springframework.security.core.GrantedAuthority)1 OAuth2Authentication (org.springframework.security.oauth2.provider.OAuth2Authentication)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1