public static void assertValid( String scope, Permission permission ) throws RbacObjectInvalidException { if ( permission == null ) { throw new RbacObjectInvalidException( scope, "Null Permission object is invalid." ); } if ( StringUtils.isEmpty( permission.getName() ) ) { throw new RbacObjectInvalidException( scope, "Permission.name must not be empty." ); } assertValid( "Permission.operation", permission.getOperation() ); assertValid( "Permission.resource", permission.getResource() ); }
public Permission createPermission( String name, String operationName, String resourceIdentifier ) throws RbacManagerException { Permission permission; try { permission = getPermission( name ); if ( StringUtils.equals( operationName, permission.getOperation().getName() ) ) { throw new RbacManagerException( "Attempted to create a permission named '" + name + "' with an operation named '" + operationName + "', but that overides the existing '" + name + "' permission with operation '" + permission.getOperation().getName() + "'" ); } } catch ( RbacObjectNotFoundException e ) { permission = new MemoryPermission(); permission.setName( name ); permission.setOperation( createOperation( operationName ) ); permission.setResource( createResource( resourceIdentifier ) ); } return permission; }
public Permission( org.apache.archiva.redback.rbac.Permission permission ) { this.name = permission.getName(); this.description = permission.getDescription(); this.operation = permission.getOperation() == null ? null : new Operation( permission.getOperation() ); this.resource = permission.getResource() == null ? null : new Resource( permission.getResource() ); this.permanent = permission.isPermanent(); }
public void removePermission( Permission permission ) throws RbacObjectNotFoundException, RbacManagerException { RBACObjectAssertions.assertValid( "Remove Permission", permission ); if ( permission.isPermanent() ) { throw new RbacPermanentException( "Unable to delete permanent permission [" + permission.getName() + "]" ); } assertPermissionExists( permission.getName() ); fireRbacPermissionRemoved( permission ); permissions.remove( permission.getName() ); }
for ( Permission permission : role.getPermissions() ) if ( permissionMap.containsKey( permission.getName() ) ) permission = permissionMap.get( permission.getName() ); permission = manager.getPermission( permission.getName() ); permissionMap.put( permission.getName(), permission ); Operation operation = permission.getOperation(); if ( operations.containsKey( operation.getName() ) ) operations.put( operation.getName(), operation ); permission.setOperation( operation ); Resource resource = permission.getResource(); if ( resources.containsKey( resource.getIdentifier() ) ) resources.put( resource.getIdentifier(), resource ); permission.setResource( resource ); permissionMap.put( permission.getName(), permission );
permission.setOperation( operation ); permission.setResource( resource ); permission.setPermanent( profilePermission.isPermanent() ); permission.setDescription( profilePermission.getDescription() );
@Test public void testGlobalResource() throws RbacManagerException { RBACManager manager = rbacManager; rbacManager.eraseDatabase(); eventTracker.rbacInit( true ); Permission editConfiguration = manager.createPermission( "Edit Configuration" ); editConfiguration.setOperation( manager.createOperation( "edit-configuration" ) ); editConfiguration.setResource( manager.getGlobalResource() ); manager.savePermission( editConfiguration ); assertEquals( 1, manager.getAllPermissions().size() ); assertEquals( 1, manager.getAllOperations().size() ); assertEquals( 1, manager.getAllResources().size() ); Permission deleteConfiguration = manager.createPermission( "Delete Configuration" ); deleteConfiguration.setOperation( manager.createOperation( "delete-configuration" ) ); deleteConfiguration.setResource( manager.getGlobalResource() ); manager.savePermission( deleteConfiguration ); assertEquals( 2, manager.getAllPermissions().size() ); assertEquals( 2, manager.getAllOperations().size() ); assertEquals( 1, manager.getAllResources().size() ); /* Assert some event tracker stuff */ assertEventTracker( 0, 0, 2, 0, true, true ); }
private Map<String, List<Permission>> getPermissionMapByOperation( Collection<Permission> permissions ) { Map<String, List<Permission>> userPermMap = new HashMap<String, List<Permission>>(); for ( Permission permission : permissions ) { List<Permission> permList = userPermMap.get( permission.getOperation().getName() ); if ( permList != null ) { permList.add( permission ); } else { List<Permission> newPermList = new ArrayList<Permission>( permissions.size() ); newPermList.add( permission ); userPermMap.put( permission.getOperation().getName(), newPermList ); } } return userPermMap; }
if ( permission.getResource().getIdentifier().equals( Resource.GLOBAL ) ) resourceGrants.add( permission.getResource().getIdentifier() );
createUserPerm.setPermanent( true );
permission.setOperation( rbacOperation ); permission.setResource( rbacResource ); permission.setPermanent( profilePermission.isPermanent() ); permission.setDescription( profilePermission.getDescription() );
createUserPerm.getOperation().setPermanent( true );
public Permission savePermission( Permission permission ) throws RbacManagerException { triggerInit(); RBACObjectAssertions.assertValid( "Save Permission", permission ); permissions.put( permission.getName(), permission ); fireRbacPermissionSaved( permission ); saveOperation( permission.getOperation() ); saveResource( permission.getResource() ); return permission; }
private void invalidateCachedPermission( Permission permission ) { if ( permission != null ) { permissionsCache.remove( permission.getName() ); } }
permission.setName( p.getName() ); if ( p.getOperation() != null ) operation.setName( p.getOperation().getName() ); permission.setOperation( operation ); if ( p.getResource() != null ) resource.setIdentifier( p.getResource().getIdentifier() ); resource.setPattern( p.getResource().isPattern() ); permission.setResource( resource );
public boolean permissionExists( String name ) { try { for ( Permission permission : getAllPermissions() ) { if ( StringUtils.equals( permission.getName(), name ) ) { return true; } } } catch ( RbacManagerException e ) { return false; } return false; }
public boolean permissionExists( Permission permission ) { if ( permission == null ) { return false; } if ( permissionsCache.hasKey( permission.getName() ) ) { return true; } return this.rbacImpl.permissionExists( permission ); }
@Override public List<Permission> getAllPermissions() throws RbacManagerException { Map<String, Permission> allPermissions = new HashMap<>(); boolean allFailed = true; Exception lastException = null; for ( RBACManager rbacManager : rbacManagersPerId.values() ) { try { List<Permission> permissions = rbacManager.getAllPermissions(); for ( Permission p : permissions ) { allPermissions.put( p.getName(), p ); } allFailed = false; } catch ( Exception e ) { lastException = e; } } if ( lastException != null && allFailed ) { throw new RbacManagerException( lastException.getMessage(), lastException ); } return new ArrayList<>( allPermissions.values() ); }