mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
Remove POC status
This commit is contained in:
@@ -1,103 +0,0 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sonia.scm.security.AssignedPermission;
|
||||
import sonia.scm.security.PermissionDescriptor;
|
||||
import sonia.scm.security.SecuritySystem;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
/**
|
||||
* Global Permission Proof of Concept (POC).
|
||||
* TODO Extend or delete this during implementation!
|
||||
*/
|
||||
@Path("v2/permissions")
|
||||
@Slf4j
|
||||
public class GlobalPermissionPocResource {
|
||||
|
||||
private SecuritySystem securitySystem;
|
||||
|
||||
@Inject
|
||||
public GlobalPermissionPocResource(SecuritySystem securitySystem) {
|
||||
this.securitySystem = securitySystem;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
How to use this proof of concept?
|
||||
|
||||
curl -vu scmadmin:scmadmin --data '{
|
||||
"active": true,
|
||||
"admin": false,
|
||||
"displayName": "arthur",
|
||||
"mail": "x@abcde.cd",
|
||||
"name": "arthur",
|
||||
"password": "scmadmin",
|
||||
"type": "xml"
|
||||
}' \
|
||||
--header "Content-Type: application/vnd.scmm-user+json;v=2" http://localhost:8081/scm/api/v2/users/
|
||||
|
||||
curl -vu scmadmin:scmadmin --data '{
|
||||
"description": "descr",
|
||||
"name": "configurers",
|
||||
"members": [ "arthur" ]
|
||||
}' \
|
||||
--header "Content-Type: application/vnd.scmm-group+json" http://localhost:8081/scm/api/v2/groups/
|
||||
|
||||
# not allowed
|
||||
curl -vu arthur:scmadmin http://localhost:8081/scm/api/v2/config
|
||||
# not allowed (empty)
|
||||
curl -vu arthur:scmadmin "http://localhost:8081/scm/api/v2/groups/?sortBy=name&desc=true" | jq
|
||||
|
||||
# Assign permissions (call this resource)
|
||||
curl -X POST -vu scmadmin:scmadmin http://localhost:8081/scm/api/v2/permissions
|
||||
|
||||
# Now allowed via individual permission
|
||||
curl -vu arthur:scmadmin "http://localhost:8081/scm/api/v2/groups/?sortBy=name&desc=true" | jq
|
||||
# allowed via group permission
|
||||
curl -vu arthur:scmadmin http://localhost:8081/scm/api/v2/config | jq
|
||||
*/
|
||||
@POST
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("")
|
||||
public Response create() {
|
||||
|
||||
// Should contain all permissions defined in permissions.xmls on the classpath.
|
||||
// Core: scm-webapp/src/main/resources/META-INF/scm/permissions.xml
|
||||
// Plugins, e.g. scm-plugins/scm-git-plugin/src/main/resources/META-INF/scm/permissions.xml
|
||||
log.info("{} Available permissions: {}", securitySystem.getAvailablePermissions().size(), securitySystem.getAvailablePermissions());
|
||||
|
||||
assignExemplaryPermissions();
|
||||
|
||||
// TODO use created()
|
||||
return Response.noContent().build();
|
||||
}
|
||||
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Path("")
|
||||
public Response getAll() {
|
||||
String[] permissions = securitySystem.getAvailablePermissions().stream().map(PermissionDescriptor::getValue).toArray(String[]::new);
|
||||
return Response.ok(new PermissionListDto(permissions)).build();
|
||||
}
|
||||
|
||||
protected void assignExemplaryPermissions() {
|
||||
AssignedPermission groupPermission = new AssignedPermission("configurers", true, new PermissionDescriptor("configuration:*"));
|
||||
log.info("try to add new permission: {}", groupPermission);
|
||||
securitySystem.addPermission(groupPermission);
|
||||
|
||||
AssignedPermission userPermission = new AssignedPermission("rene", new PermissionDescriptor("group:*"));
|
||||
log.info("try to add new permission: {}", userPermission);
|
||||
securitySystem.addPermission(userPermission);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sonia.scm.security.AssignedPermission;
|
||||
import sonia.scm.security.PermissionDescriptor;
|
||||
import sonia.scm.security.SecuritySystem;
|
||||
import sonia.scm.web.VndMediaType;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@Path("v2/permissions")
|
||||
public class GlobalPermissionResource {
|
||||
|
||||
private SecuritySystem securitySystem;
|
||||
|
||||
@Inject
|
||||
public GlobalPermissionResource(SecuritySystem securitySystem) {
|
||||
this.securitySystem = securitySystem;
|
||||
}
|
||||
|
||||
@GET
|
||||
@Produces(VndMediaType.PERMISSION_COLLECTION)
|
||||
@Path("")
|
||||
public Response getAll() {
|
||||
String[] permissions = securitySystem.getAvailablePermissions().stream().map(PermissionDescriptor::getValue).toArray(String[]::new);
|
||||
return Response.ok(new PermissionListDto(permissions)).build();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -616,7 +616,7 @@ class ResourceLinks {
|
||||
private final LinkBuilder permissionsLlinkBuilder;
|
||||
|
||||
PermissionsLinks(ScmPathInfo scmPathInfo) {
|
||||
this.permissionsLlinkBuilder = new LinkBuilder(scmPathInfo, GlobalPermissionPocResource.class);
|
||||
this.permissionsLlinkBuilder = new LinkBuilder(scmPathInfo, GlobalPermissionResource.class);
|
||||
}
|
||||
|
||||
String self() {
|
||||
|
||||
Reference in New Issue
Block a user