73 lines
3.0 KiB
Java
73 lines
3.0 KiB
Java
package eu.eudat.controllers.v2;
|
|
|
|
import eu.eudat.models.data.dataset.DatasetOverviewModel;
|
|
import eu.eudat.models.data.helpers.responses.ResponseItem;
|
|
import eu.eudat.models.v2.AccountBuilder;
|
|
import eu.eudat.types.ApiMessageCode;
|
|
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.http.HttpStatus;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import eu.eudat.models.v2.Account;
|
|
|
|
@RestController
|
|
@CrossOrigin
|
|
@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 ResponseEntity<?> me(FieldSet fieldSet) {
|
|
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),
|
|
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 ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Account>().status(ApiMessageCode.NO_MESSAGE).payload(me));
|
|
}
|
|
|
|
}
|