Commit 9f5fae50 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Changes in set permission and CLI

parent c67052b0
Loading
Loading
Loading
Loading
+0 −11
Original line number Original line Diff line number Diff line
@@ -28,17 +28,6 @@ The first super admin user must be added manually, then he/she will be able to a


The value `user_id` is the RAP user id.
The value `user_id` is the RAP user id.


## Command line clients

To add a command line client first generate the sha256 of its password:

    echo -n password | sha256sum

Then insert the client line into the database:

    INSERT INTO gms_client (client_id, client_secret, allowed_actions, ip_filter)
    VALUES ('test', '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', '{"*"}', NULL);

## Developer notes
## Developer notes


Backend and frontend are 2 separate applications:
Backend and frontend are 2 separate applications:
+8 −0
Original line number Original line Diff line number Diff line
@@ -178,6 +178,13 @@ public class CLI {
                client.removeMember(args[argIndex + 1], args[argIndex + 2]);
                client.removeMember(args[argIndex + 1], args[argIndex + 2]);
                System.out.println("Member removed");
                System.out.println("Member removed");
                break;
                break;
            case "set-permission":
                if (argIndex + 3 >= args.length) {
                    displayUsage();
                }
                client.setPermission(args[argIndex + 1], args[argIndex + 2], Permission.valueOf(args[argIndex + 3]));
                System.out.println("Permission changed");
                break;
            case "add-permission":
            case "add-permission":
                if (argIndex + 3 >= args.length) {
                if (argIndex + 3 >= args.length) {
                    displayUsage();
                    displayUsage();
@@ -220,6 +227,7 @@ public class CLI {
                + "    delete-group <name1.name2.name3>\n"
                + "    delete-group <name1.name2.name3>\n"
                + "    add-member <name1.name2.name3> <user_id>\n"
                + "    add-member <name1.name2.name3> <user_id>\n"
                + "    remove-member <name1.name2.name3> <user_id>\n"
                + "    remove-member <name1.name2.name3> <user_id>\n"
                + "    set-permission <name1.name2.name3> <user_id> <permission>\n"
                + "    add-permission <name1.name2.name3> <user_id> <permission>\n"
                + "    add-permission <name1.name2.name3> <user_id> <permission>\n"
                + "    delete-permission <name1.name2.name3> <user_id>\n"
                + "    delete-permission <name1.name2.name3> <user_id>\n"
                + "    get-member-email-addresses <name1.name2.name3> [<permission>]");
                + "    get-member-email-addresses <name1.name2.name3> [<permission>]");
+5 −0
Original line number Original line Diff line number Diff line
@@ -13,6 +13,7 @@ import it.inaf.ia2.gms.client.call.GetUserPermissionsCall;
import it.inaf.ia2.gms.client.call.ListGroupsCall;
import it.inaf.ia2.gms.client.call.ListGroupsCall;
import it.inaf.ia2.gms.client.call.RemoveMemberCall;
import it.inaf.ia2.gms.client.call.RemoveMemberCall;
import it.inaf.ia2.gms.client.call.RemovePermissionCall;
import it.inaf.ia2.gms.client.call.RemovePermissionCall;
import it.inaf.ia2.gms.client.call.SetPermissionCall;
import it.inaf.ia2.gms.client.model.GroupPermission;
import it.inaf.ia2.gms.client.model.GroupPermission;
import it.inaf.ia2.gms.client.model.Permission;
import it.inaf.ia2.gms.client.model.Permission;
import it.inaf.ia2.gms.client.model.UserPermission;
import it.inaf.ia2.gms.client.model.UserPermission;
@@ -64,6 +65,10 @@ public class GmsClient {
        new AddPermissionCall(httpClientWrapper).addPermission(completeGroupName, userId, permission);
        new AddPermissionCall(httpClientWrapper).addPermission(completeGroupName, userId, permission);
    }
    }


    public void setPermission(String completeGroupName, String userId, Permission permission) {
        new SetPermissionCall(httpClientWrapper).setPermission(completeGroupName, userId, permission);
    }

    public void removePermission(String completeGroupName, String userId) {
    public void removePermission(String completeGroupName, String userId) {
        new RemovePermissionCall(httpClientWrapper).removePermission(completeGroupName, userId);
        new RemovePermissionCall(httpClientWrapper).removePermission(completeGroupName, userId);
    }
    }
+39 −0
Original line number Original line Diff line number Diff line
package it.inaf.ia2.gms.client.call;

import static it.inaf.ia2.gms.client.call.BaseGmsCall.logServerErrorInputStream;
import it.inaf.ia2.gms.client.model.Permission;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class SetPermissionCall extends BaseGmsCall {

    public SetPermissionCall(HttpClientWrapper clientWrapper) {
        super(clientWrapper);
    }

    public boolean setPermission(String completeGroupName, String userId, Permission permission) {

        String endpoint = "permission";
        if (completeGroupName != null && !completeGroupName.isBlank()) {
            endpoint += "/" + completeGroupName;
        }

        HttpRequest.BodyPublisher requestBody = HttpRequest.BodyPublishers.ofString(
                "user_id=" + userId + "&permission=" + permission);

        HttpRequest groupsRequest = newHttpRequest(endpoint)
                .header("Accept", "text/plain")
                .header("Content-Type", "application/x-www-form-urlencoded")
                .PUT(requestBody)
                .build();

        return getClient().sendAsync(groupsRequest, HttpResponse.BodyHandlers.ofInputStream())
                .thenApply(response -> {
                    if (response.statusCode() == 200) {
                        return true;
                    }
                    logServerErrorInputStream(groupsRequest, response);
                    throw new IllegalStateException("Unable to set permission");
                }).join();
    }
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -59,6 +59,6 @@ public class SessionData {
    }
    }


    public long getExpiresIn() {
    public long getExpiresIn() {
        return (System.currentTimeMillis() - expiration) / 1000;
        return (expiration - System.currentTimeMillis()) / 1000;
    }
    }
}
}
Loading