package org.commonjava.web.user.shiro; import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.inject.Inject; import org.apache.shiro.authz.Permission; import org.apache.shiro.authz.permission.PermissionResolver; import org.apache.shiro.authz.permission.RolePermissionResolver; import org.commonjava.web.user.data.UserDataManager; import org.commonjava.web.user.model.Role; public class ShiroPermissionResolver implements PermissionResolver, RolePermissionResolver { @Inject private UserDataManager dataManager; @Override public Permission resolvePermission( final String permissionName ) { return dataManager.getPermission( permissionName ); } @Override public Collection<Permission> resolvePermissionsInRole( final String roleName ) { final Set<Permission> perms = new HashSet<Permission>(); final Role role = dataManager.getRole( roleName ); if ( role.getPermissions() != null ) { for ( final org.commonjava.web.user.model.Permission perm : role.getPermissions() ) { perms.add( perm ); } } return perms; } }