package eu.dnetlib.repo.manager.service; import org.mitre.openid.connect.model.OIDCAuthenticationToken; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service("userService") public class UserServiceImpl implements UserService { private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger .getLogger(UserServiceImpl.class); @Value("${oidc.issuer}") private String oidc_issuer; @Override public ResponseEntity login() { OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication(); logger.debug("User authentication : " + authentication); Map body = new HashMap<>(); body.put("sub",authentication.getSub()); if(authentication.getUserInfo().getName() == null || authentication.getUserInfo().getName().equals("")) body.put("name",authentication.getUserInfo().getGivenName() + " " + authentication.getUserInfo().getFamilyName()); else body.put("name",authentication.getUserInfo().getName()); body.put("email",authentication.getUserInfo().getEmail()); List roles = authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); body.put("role",roles); return new ResponseEntity<>(body, HttpStatus.OK); } }