storagehub/src/main/java/org/gcube/data/access/storagehub/services/Impersonable.java

38 lines
1.1 KiB
Java
Raw Normal View History

package org.gcube.data.access.storagehub.services;
import static org.gcube.data.access.storagehub.Roles.INFRASTRUCTURE_MANAGER_ROLE;
2022-06-15 17:49:58 +02:00
import org.gcube.common.security.Owner;
import org.gcube.common.security.providers.SecretManagerProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2024-03-15 14:26:05 +01:00
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.core.Context;
@Path("")
public abstract class Impersonable {
Logger log = LoggerFactory.getLogger(Impersonable.class);
2021-04-07 12:38:18 +02:00
String currentUser;
@RequestScoped
@Inject
2021-04-07 12:38:18 +02:00
public void setCurrentUser(@Context final HttpServletRequest request) {
String impersonate = request!=null ? request.getParameter("impersonate") : null ;
2024-03-15 14:26:05 +01:00
Owner owner = SecretManagerProvider.get().getOwner();
2022-06-15 17:49:58 +02:00
if(impersonate!=null && owner.getRoles().contains(INFRASTRUCTURE_MANAGER_ROLE)) {
this.currentUser = impersonate;
} else
2022-06-15 17:49:58 +02:00
this.currentUser = owner.getId();
2021-04-07 12:38:18 +02:00
2022-06-15 17:49:58 +02:00
log.info("called with login {} and impersonate {}",owner.getId(), impersonate);
}
}