Add permission for permissions

This commit is contained in:
René Pfeuffer
2019-01-16 16:55:24 +01:00
parent 5e364e1043
commit 7462613c16
2 changed files with 17 additions and 5 deletions

View File

@@ -0,0 +1,12 @@
package sonia.scm.security;
import com.github.sdorra.ssp.PermissionObject;
import com.github.sdorra.ssp.StaticPermissions;
@StaticPermissions(
value = "permission",
permissions = {},
globalPermissions = {"list", "assign"}
)
public interface Permission extends PermissionObject {
}

View File

@@ -126,7 +126,7 @@ public class DefaultSecuritySystem implements SecuritySystem
@Override @Override
public void addPermission(AssignedPermission permission) public void addPermission(AssignedPermission permission)
{ {
assertIsAdmin(); assertHasPermission();
validatePermission(permission); validatePermission(permission);
String id = store.put(permission); String id = store.put(permission);
@@ -149,7 +149,7 @@ public class DefaultSecuritySystem implements SecuritySystem
@Override @Override
public void deletePermission(AssignedPermission permission) public void deletePermission(AssignedPermission permission)
{ {
assertIsAdmin(); assertHasPermission();
boolean deleted = deletePermissions(sap -> Objects.equal(sap.getName(), permission.getName()) boolean deleted = deletePermissions(sap -> Objects.equal(sap.getName(), permission.getName())
&& Objects.equal(sap.isGroupPermission(), permission.isGroupPermission()) && Objects.equal(sap.isGroupPermission(), permission.isGroupPermission())
&& Objects.equal(sap.getPermission(), permission.getPermission())); && Objects.equal(sap.getPermission(), permission.getPermission()));
@@ -203,7 +203,7 @@ public class DefaultSecuritySystem implements SecuritySystem
@Override @Override
public Collection<PermissionDescriptor> getAvailablePermissions() public Collection<PermissionDescriptor> getAvailablePermissions()
{ {
assertIsAdmin(); assertHasPermission();
return availablePermissions; return availablePermissions;
} }
@@ -238,9 +238,9 @@ public class DefaultSecuritySystem implements SecuritySystem
* Method description * Method description
* *
*/ */
private void assertIsAdmin() private void assertHasPermission()
{ {
SecurityUtils.getSubject().checkRole(Role.ADMIN); PermissionPermissions.assign().check();
} }
/** /**