package org.gatein.management.runtime;
import org.exoplatform.services.security.ConversationState;
import org.exoplatform.services.security.Identity;
import org.exoplatform.services.security.IdentityConstants;
import org.gatein.management.api.ExternalContext;
/**
* @author <a href="mailto:nscavell@redhat.com">Nick Scavelli</a>
*/
public class ExternalContextImpl implements ExternalContext {
@Override
public String getRemoteUser() {
Identity identity = getIdentity();
if (identity != null) {
String user = identity.getUserId();
// Returning null implies it's an anonymous user
if (IdentityConstants.ANONIM.equals(user)) {
return null;
}
return user;
}
return null;
}
@Override
public boolean isUserInRole(String role) {
if (role == null) return false;
Identity identity = getIdentity();
if (identity != null) {
for (String r : identity.getRoles()) {
if (role.equals(r)) return true;
}
return false;
} else {
// In order for export/import gadget to work (conversation/identity is not set) we must return true here
return true;
}
}
private static Identity getIdentity() {
ConversationState conversation = ConversationState.getCurrent();
if (conversation == null) return null;
return conversation.getIdentity();
}
}