edu.stanford.protege.webprotege.user.GetAuthenticatedUserDetailsActionHandler Maven / Gradle / Ivy
The newest version!
package edu.stanford.protege.webprotege.user;
import edu.stanford.protege.webprotege.access.AccessManager;
import edu.stanford.protege.webprotege.authorization.ApplicationResource;
import edu.stanford.protege.webprotege.authorization.Subject;
import edu.stanford.protege.webprotege.dispatch.ApplicationActionHandler;
import edu.stanford.protege.webprotege.dispatch.RequestContext;
import edu.stanford.protege.webprotege.dispatch.RequestValidator;
import edu.stanford.protege.webprotege.dispatch.validators.NullValidator;
import edu.stanford.protege.webprotege.ipc.ExecutionContext;
import javax.annotation.Nonnull;
import java.util.Collections;
import java.util.Optional;
/**
* Matthew Horridge
* Stanford Center for Biomedical Informatics Research
* 2021-10-29
*/
public class GetAuthenticatedUserDetailsActionHandler implements ApplicationActionHandler {
private final AccessManager accessManager;
private final UserDetailsManager userDetailsManager;
public GetAuthenticatedUserDetailsActionHandler(AccessManager accessManager,
UserDetailsManager userDetailsManager) {
this.accessManager = accessManager;
this.userDetailsManager = userDetailsManager;
}
@Nonnull
@Override
public Class getActionClass() {
return GetAuthenticatedUserDetailsRequest.class;
}
@Nonnull
@Override
public RequestValidator getRequestValidator(@Nonnull GetAuthenticatedUserDetailsRequest action,
@Nonnull RequestContext requestContext) {
return NullValidator.get();
}
@Nonnull
@Override
public GetAuthenticatedUserDetailsResponse execute(@Nonnull GetAuthenticatedUserDetailsRequest action,
@Nonnull ExecutionContext executionContext) {
var userId = executionContext.userId();
if(userId.isGuest()) {
return new GetAuthenticatedUserDetailsResponse(UserDetails.getGuestUserDetails(),
Collections.emptySet());
}
else {
var userDetails = userDetailsManager.getUserDetails(userId)
.orElse(UserDetails.getUserDetails(userId,
userId.id(), Optional.empty()));
var permittedActions = accessManager.getActionClosure(Subject.forUser(userId), ApplicationResource.get(),
new edu.stanford.protege.webprotege.ipc.ExecutionContext(executionContext.userId(), executionContext.jwt()));
return new GetAuthenticatedUserDetailsResponse(userDetails, permittedActions);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy