diff --git a/Crx/connection.py b/Crx/connection.py index e5ca877..c1565ed 100644 --- a/Crx/connection.py +++ b/Crx/connection.py @@ -1,11 +1,11 @@ import json from typing import Union, List, Optional - -import requests from urllib.parse import urljoin -from .simplenode import SimpleNode +import requests + from .patchbuilder import PatchBuilder +from .simplenode import SimpleNode # TODO validation @@ -41,6 +41,8 @@ WORKFLOW_LIST_MODELS = '/libs/cq/workflow/content/console/workflows.json' CREATE_ASSET = '.createasset.html' +SECURITY_AUTHORIZABLES = "/bin/security/authorizables.json" + JSON_DATA_EXTENSION = '.1.json' QUERY_TYPES = { @@ -343,3 +345,27 @@ class Connection: ) resp.raise_for_status() return resp.json()['path'] + + def get_authorizables(self, start: int = 0, user_filter: str = "", ml: int = 0, limit: int = 500, hide_groups: bool = False, hide_users: bool = False): + args = { + 'start': start, + 'filter': user_filter, + 'ml': ml, + 'limit': limit, + 'hideGroups': json.dumps(hide_groups), + 'hideUsers': json.dumps(hide_users), + } + url = self._host + SECURITY_AUTHORIZABLES + resp = self._session.get(url, params=args) + + return resp.json()['authorizables'] + + def add_remove_group(self, path: str, group_name: str): + args = { + 'memberAction': (None, 'memberOf'), + 'memberEntry': (None, group_name), + } + url = self._host + path + resp = self._session.post(url, files=args) + print(resp.text) + return resp.ok