package fi.otavanopisto.pyramus.security.impl;
import javax.ejb.Stateless;
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import fi.otavanopisto.pyramus.domainmodel.users.Role;
import fi.otavanopisto.pyramus.domainmodel.users.User;
import fi.otavanopisto.security.ContextReference;
@Stateless
public abstract class AbstractPermissionResolver {
@Inject
@Any
private Instance<UserContextResolver> userContextResolvers;
@Inject
@Any
private Instance<PyramusPermissionCollection> permissionCollections;
protected Role getEveryoneRole() {
return Role.EVERYONE;
}
protected User getUser(fi.otavanopisto.security.User user) {
return (User) user;
}
/**
* Uses ContextResolvers to resolve user from ContextReference
*
* @param contextReference
* @return user if found, else null
*/
protected User resolveUser(ContextReference contextReference) {
for (UserContextResolver resolver : userContextResolvers) {
if (resolver.handlesContextReference(contextReference))
return resolver.resolveUser(contextReference);
}
return null;
}
protected PyramusPermissionCollection findCollection(String permission) {
for (PyramusPermissionCollection collection : permissionCollections) {
if (collection.containsPermission(permission))
return collection;
}
return null;
}
}