use of org.apache.archiva.redback.rbac.RbacManagerException in project archiva by apache.
the class ArchivaRbacManager method saveResource.
@Override
public Resource saveResource(Resource resource) throws RbacObjectInvalidException, RbacManagerException {
boolean allFailed = true;
Exception lastException = null;
for (RBACManager rbacManager : rbacManagersPerId.values()) {
try {
if (!rbacManager.isReadOnly()) {
resource = rbacManager.saveResource(resource);
allFailed = false;
}
} catch (Exception e) {
lastException = e;
}
}
if (lastException != null && allFailed) {
throw new RbacManagerException(lastException.getMessage(), lastException);
}
return resource;
}
use of org.apache.archiva.redback.rbac.RbacManagerException in project archiva by apache.
the class ArchivaRbacManager method removeResource.
@Override
public void removeResource(Resource resource) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException {
boolean allFailed = true;
Exception lastException = null;
for (RBACManager rbacManager : rbacManagersPerId.values()) {
try {
rbacManager.removeResource(resource);
resourcesCache.remove(resource.getIdentifier());
allFailed = false;
} catch (Exception e) {
lastException = e;
}
}
if (lastException != null && allFailed) {
throw new RbacManagerException(lastException.getMessage(), lastException);
}
}
use of org.apache.archiva.redback.rbac.RbacManagerException in project archiva by apache.
the class ArchivaRbacManager method getOperation.
@Override
public Operation getOperation(String operationName) throws RbacObjectNotFoundException, RbacManagerException {
Operation el = operationsCache.get(operationName);
if (el != null) {
return el;
}
Exception lastException = null;
for (RBACManager rbacManager : rbacManagersPerId.values()) {
try {
Operation o = rbacManager.getOperation(operationName);
if (o != null) {
operationsCache.put(operationName, o);
return o;
}
} catch (Exception e) {
lastException = e;
}
}
if (lastException != null) {
throw new RbacManagerException(lastException.getMessage(), lastException);
}
return null;
}
use of org.apache.archiva.redback.rbac.RbacManagerException in project archiva by apache.
the class ArchivaRbacManager method getUserAssignment.
@Override
public UserAssignment getUserAssignment(String principal) throws RbacObjectNotFoundException, RbacManagerException {
UserAssignment el = userAssignmentsCache.get(principal);
if (el != null) {
return el;
}
UserAssignment ua = null;
Exception lastException = null;
for (RBACManager rbacManager : rbacManagersPerId.values()) {
try {
if (ua == null) {
ua = rbacManager.getUserAssignment(principal);
} else {
UserAssignment userAssignment = rbacManager.getUserAssignment(principal);
if (userAssignment != null) {
for (String roleName : userAssignment.getRoleNames()) {
ua.addRoleName(roleName);
}
}
}
} catch (Exception e) {
lastException = e;
}
}
if (ua != null) {
userAssignmentsCache.put(principal, ua);
return ua;
}
if (lastException != null) {
throw new RbacManagerException(lastException.getMessage(), lastException);
}
return null;
}
use of org.apache.archiva.redback.rbac.RbacManagerException in project archiva by apache.
the class SecuritySynchronization method assignRepositoryObserverToGuestUser.
private void assignRepositoryObserverToGuestUser(List<ManagedRepositoryConfiguration> repos) {
for (ManagedRepositoryConfiguration repoConfig : repos) {
String repoId = repoConfig.getId();
String principal = UserManager.GUEST_USERNAME;
try {
UserAssignment ua;
if (rbacManager.userAssignmentExists(principal)) {
ua = rbacManager.getUserAssignment(principal);
} else {
ua = rbacManager.createUserAssignment(principal);
}
ua.addRoleName(ArchivaRoleConstants.toRepositoryObserverRoleName(repoId));
rbacManager.saveUserAssignment(ua);
} catch (RbacManagerException e) {
log.warn("Unable to add role [{}] to {} user.", ArchivaRoleConstants.toRepositoryObserverRoleName(repoId), principal, e);
}
}
}
Aggregations