75 lines
3.1 KiB
Java
75 lines
3.1 KiB
Java
package eu.eudat.controllers.v2;
|
|
|
|
import eu.eudat.audit.AuditableAction;
|
|
import eu.eudat.models.Account;
|
|
import eu.eudat.models.AccountBuilder;
|
|
import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver;
|
|
import gr.cite.commons.web.oidc.principal.MyPrincipal;
|
|
import gr.cite.tools.auditing.AuditService;
|
|
import gr.cite.tools.fieldset.BaseFieldSet;
|
|
import gr.cite.tools.fieldset.FieldSet;
|
|
import gr.cite.tools.logging.LoggerService;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import javax.management.InvalidApplicationException;
|
|
|
|
@RestController
|
|
@RequestMapping(value = { "/api/principal/" })
|
|
public class PrincipalController {
|
|
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(PrincipalController.class));
|
|
private final AuditService auditService;
|
|
|
|
private final CurrentPrincipalResolver currentPrincipalResolver;
|
|
private final AccountBuilder accountBuilder;
|
|
|
|
@Autowired
|
|
public PrincipalController(
|
|
CurrentPrincipalResolver currentPrincipalResolver,
|
|
AccountBuilder accountBuilder,
|
|
AuditService auditService) {
|
|
this.currentPrincipalResolver = currentPrincipalResolver;
|
|
this.accountBuilder = accountBuilder;
|
|
this.auditService = auditService;
|
|
}
|
|
|
|
@RequestMapping(path = "me", method = RequestMethod.GET )
|
|
public Account me(FieldSet fieldSet) throws InvalidApplicationException {
|
|
logger.debug("me");
|
|
|
|
if (fieldSet == null || fieldSet.isEmpty()) {
|
|
fieldSet = new BaseFieldSet(
|
|
Account._isAuthenticated,
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._subject),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._userId),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._name),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._scope),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._client),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._issuedAt),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._notBefore),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._authenticatedAt),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._expiresAt),
|
|
BaseFieldSet.asIndexer(Account._principal, Account.PrincipalInfo._more),
|
|
BaseFieldSet.asIndexer(Account._profile, Account.UserProfileInfo._avatarUrl),
|
|
BaseFieldSet.asIndexer(Account._profile, Account.UserProfileInfo._language),
|
|
BaseFieldSet.asIndexer(Account._profile, Account.UserProfileInfo._culture),
|
|
BaseFieldSet.asIndexer(Account._profile, Account.UserProfileInfo._timezone),
|
|
Account._roles,
|
|
Account._permissions);
|
|
}
|
|
|
|
MyPrincipal principal = this.currentPrincipalResolver.currentPrincipal();
|
|
|
|
Account me = this.accountBuilder.build(fieldSet, principal);
|
|
|
|
this.auditService.track(AuditableAction.Principal_Lookup);
|
|
//auditService.trackIdentity(AuditableAction.IdentityTracking_Action);
|
|
|
|
return me;
|
|
}
|
|
|
|
}
|