mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Make role add and edit use API v2 internal APIs
This commit is contained in:
parent
f763fa9d0c
commit
bd4a35b418
@ -16,6 +16,7 @@ from tornado import iostream
|
|||||||
# TZLocal is set as a hidden import on win pipeline
|
# TZLocal is set as a hidden import on win pipeline
|
||||||
from tzlocal import get_localzone
|
from tzlocal import get_localzone
|
||||||
from croniter import croniter
|
from croniter import croniter
|
||||||
|
from app.classes.controllers.roles_controller import RolesController
|
||||||
|
|
||||||
from app.classes.models.roles import HelperRoles
|
from app.classes.models.roles import HelperRoles
|
||||||
from app.classes.models.server_permissions import (
|
from app.classes.models.server_permissions import (
|
||||||
@ -40,8 +41,8 @@ class PanelHandler(BaseHandler):
|
|||||||
user_roles[user_id] = user_roles_list
|
user_roles[user_id] = user_roles_list
|
||||||
return user_roles
|
return user_roles
|
||||||
|
|
||||||
def get_role_servers(self) -> t.Set[int]:
|
def get_role_servers(self) -> t.List[RolesController.RoleServerJsonType]:
|
||||||
servers = set()
|
servers = list()
|
||||||
for server in self.controller.list_defined_servers():
|
for server in self.controller.list_defined_servers():
|
||||||
argument = self.get_argument(f"server_{server['server_id']}_access", "0")
|
argument = self.get_argument(f"server_{server['server_id']}_access", "0")
|
||||||
if argument == "0":
|
if argument == "0":
|
||||||
@ -57,7 +58,9 @@ class PanelHandler(BaseHandler):
|
|||||||
permission_mask, permission, "1"
|
permission_mask, permission, "1"
|
||||||
)
|
)
|
||||||
|
|
||||||
servers.add((server["server_id"], permission_mask))
|
servers.append(
|
||||||
|
{"server_id": server["server_id"], "permissions": permission_mask}
|
||||||
|
)
|
||||||
return servers
|
return servers
|
||||||
|
|
||||||
def get_perms_quantity(self) -> t.Tuple[str, dict]:
|
def get_perms_quantity(self) -> t.Tuple[str, dict]:
|
||||||
@ -2022,35 +2025,7 @@ class PanelHandler(BaseHandler):
|
|||||||
|
|
||||||
servers = self.get_role_servers()
|
servers = self.get_role_servers()
|
||||||
|
|
||||||
# TODO: use update_role_advanced when API v2 gets merged
|
self.controller.roles.update_role_advanced(role_id, role_name, servers)
|
||||||
base_data = self.controller.roles.get_role_with_servers(role_id)
|
|
||||||
|
|
||||||
server_ids = {server[0] for server in servers}
|
|
||||||
server_permissions_map = {server[0]: server[1] for server in servers}
|
|
||||||
|
|
||||||
added_servers = server_ids.difference(set(base_data["servers"]))
|
|
||||||
removed_servers = set(base_data["servers"]).difference(server_ids)
|
|
||||||
same_servers = server_ids.intersection(set(base_data["servers"]))
|
|
||||||
logger.debug(
|
|
||||||
f"role: {role_id} +server:{added_servers} -server{removed_servers}"
|
|
||||||
)
|
|
||||||
for server_id in added_servers:
|
|
||||||
PermissionsServers.get_or_create(
|
|
||||||
role_id, server_id, server_permissions_map[server_id]
|
|
||||||
)
|
|
||||||
for server_id in same_servers:
|
|
||||||
PermissionsServers.update_role_permission(
|
|
||||||
role_id, server_id, server_permissions_map[server_id]
|
|
||||||
)
|
|
||||||
if len(removed_servers) != 0:
|
|
||||||
PermissionsServers.delete_roles_permissions(role_id, removed_servers)
|
|
||||||
|
|
||||||
up_data = {
|
|
||||||
"role_name": role_name,
|
|
||||||
"last_update": Helpers.get_time_as_string(),
|
|
||||||
}
|
|
||||||
# TODO: do the last_update on the db side
|
|
||||||
HelperRoles.update_role(role_id, up_data)
|
|
||||||
|
|
||||||
self.controller.management.add_to_audit_log(
|
self.controller.management.add_to_audit_log(
|
||||||
exec_user["user_id"],
|
exec_user["user_id"],
|
||||||
@ -2087,10 +2062,7 @@ class PanelHandler(BaseHandler):
|
|||||||
|
|
||||||
servers = self.get_role_servers()
|
servers = self.get_role_servers()
|
||||||
|
|
||||||
role_id = self.controller.roles.add_role(role_name)
|
role_id = self.controller.roles.add_role_advanced(role_name, servers)
|
||||||
# TODO: use add_role_advanced when API v2 gets merged
|
|
||||||
for server in servers:
|
|
||||||
PermissionsServers.get_or_create(role_id, server[0], server[1])
|
|
||||||
|
|
||||||
self.controller.management.add_to_audit_log(
|
self.controller.management.add_to_audit_log(
|
||||||
exec_user["user_id"],
|
exec_user["user_id"],
|
||||||
|
Loading…
Reference in New Issue
Block a user