Doing MVC on Crafty Permissions

This commit is contained in:
Silversthorn 2021-09-06 19:27:01 +02:00
parent 95aa228a92
commit cb73540e65
6 changed files with 182 additions and 138 deletions

View File

@ -12,8 +12,9 @@ from distutils import dir_util
from app.classes.shared.helpers import helper
from app.classes.shared.console import console
from app.classes.shared.models import db_helper, server_permissions, Enum_Permissions_Server, crafty_permissions, Enum_Permissions_Crafty
from app.classes.shared.models import db_helper, server_permissions, Enum_Permissions_Server
from app.classes.shared.models_folder.crafty_permissions import crafty_permissions, Enum_Permissions_Crafty
from app.classes.shared.controllers.crafty_perms_controller import Crafty_Perms_Controller
from app.classes.shared.server import Server
from app.classes.minecraft.server_props import ServerProps
from app.classes.minecraft.serverjars import server_jar_obj
@ -27,6 +28,7 @@ class Controller:
def __init__(self):
self.servers_list = []
self.stats = Stats(self)
self.crafty_perms = Crafty_Perms_Controller()
def check_server_loaded(self, server_id_to_check: int):
@ -131,11 +133,6 @@ class Controller:
permissions_list = server_permissions.get_permissions_list()
return permissions_list
@staticmethod
def list_defined_crafty_permissions():
permissions_list = crafty_permissions.get_permissions_list()
return permissions_list
@staticmethod
def get_mask_permissions(role_id, server_id):
permissions_mask = db_helper.get_permissions_mask(role_id, server_id)
@ -151,50 +148,6 @@ class Controller:
permissions_list = db_helper.get_user_permissions_list(user_id, server_id)
return permissions_list
@staticmethod
def get_mask_crafty_permissions(user_id):
permissions_mask = db_helper.get_crafty_permissions_mask(user_id)
return permissions_mask
@staticmethod
def get_crafty_permissions(user_id):
permissions_list = db_helper.get_crafty_permissions_list(user_id)
return permissions_list
@staticmethod
def can_create_server(user_id):
return db_helper.can_add_in_crafty(user_id, Enum_Permissions_Crafty.Server_Creation)
@staticmethod
def can_add_user(user_id):
#TODO: Complete if we need a User Addition limit
#return db_helper.can_add_in_crafty(user_id, Enum_Permissions_Crafty.User_Config)
return True
@staticmethod
def can_add_role(user_id):
#TODO: Complete if we need a Role Addition limit
#return db_helper.can_add_in_crafty(user_id, Enum_Permissions_Crafty.Roles_Config)
return True
@staticmethod
def list_all_crafty_permissions_quantity_limits():
return db_helper.get_all_permission_quantity_list()
@staticmethod
def list_crafty_permissions_quantity_limits(user_id):
return db_helper.get_permission_quantity_list(user_id)
@staticmethod
def get_crafty_permissions(user_id):
permissions_list = db_helper.get_crafty_permissions_list(user_id)
return permissions_list
@staticmethod
def get_crafty_permissions(user_id):
permissions_list = db_helper.get_crafty_permissions_list(user_id)
return permissions_list
@staticmethod
def list_authorized_servers(userId):
server_list = db_helper.get_authorized_servers(userId)

View File

@ -0,0 +1,66 @@
import os
import time
import logging
import sys
import yaml
import asyncio
import shutil
import tempfile
import zipfile
from distutils import dir_util
from app.classes.shared.helpers import helper
from app.classes.shared.console import console
from app.classes.shared.models import db_helper, server_permissions, Enum_Permissions_Server
from app.classes.shared.models_folder.crafty_permissions import crafty_permissions, Enum_Permissions_Crafty
from app.classes.shared.server import Server
from app.classes.minecraft.server_props import ServerProps
from app.classes.minecraft.serverjars import server_jar_obj
from app.classes.minecraft.stats import Stats
logger = logging.getLogger(__name__)
class Crafty_Perms_Controller:
@staticmethod
def list_defined_crafty_permissions():
permissions_list = crafty_permissions.get_permissions_list()
return permissions_list
@staticmethod
def get_mask_crafty_permissions(user_id):
permissions_mask = crafty_permissions.get_crafty_permissions_mask(user_id)
return permissions_mask
@staticmethod
def can_create_server(user_id):
return db_helper.can_add_in_crafty(user_id, Enum_Permissions_Crafty.Server_Creation)
@staticmethod
def can_add_user(user_id):
#TODO: Complete if we need a User Addition limit
#return db_helper.can_add_in_crafty(user_id, Enum_Permissions_Crafty.User_Config)
return True
@staticmethod
def can_add_role(user_id):
#TODO: Complete if we need a Role Addition limit
#return db_helper.can_add_in_crafty(user_id, Enum_Permissions_Crafty.Roles_Config)
return True
@staticmethod
def list_all_crafty_permissions_quantity_limits():
return db_helper.get_all_permission_quantity_list()
@staticmethod
def list_crafty_permissions_quantity_limits(user_id):
return db_helper.get_permission_quantity_list(user_id)
@staticmethod
def get_crafty_permissions_list(user_id):
permissions_mask = crafty_permissions.get_crafty_permissions_mask(user_id)
permissions_list = crafty_permissions.get_permissions(permissions_mask)
return permissions_list

View File

@ -472,42 +472,7 @@ class db_shortcuts:
if (time_limit == -1) or (ttl_no_players > time_limit):
can = True
return can
#************************************************************************************************
# Crafty Permissions Methods
#************************************************************************************************
@staticmethod
def get_crafty_permissions_mask(user_id):
permissions_mask = ''
user_crafty = db_helper.get_User_Crafty(user_id)
permissions_mask = user_crafty.permissions
return permissions_mask
@staticmethod
def get_crafty_permissions_list(user_id):
permissions_mask = db_helper.get_crafty_permissions_mask(user_id)
permissions_list = crafty_permissions.get_permissions(permissions_mask)
return permissions_list
@staticmethod
def get_all_permission_quantity_list():
quantity_list = {
Enum_Permissions_Crafty.Server_Creation.name: -1,
Enum_Permissions_Crafty.User_Config.name: -1,
Enum_Permissions_Crafty.Roles_Config.name: -1,
}
return quantity_list
@staticmethod
def get_permission_quantity_list(user_id):
user_crafty = db_helper.get_User_Crafty(user_id)
quantity_list = {
Enum_Permissions_Crafty.Server_Creation.name: user_crafty.limit_server_creation,
Enum_Permissions_Crafty.User_Config.name: user_crafty.limit_user_creation,
Enum_Permissions_Crafty.Roles_Config.name: user_crafty.limit_role_creation,
}
return quantity_list
#************************************************************************************************
# User_Crafty Methods
#************************************************************************************************
@ -1109,49 +1074,6 @@ class Permissions_Servers:
def get_permission(permission_mask, permission_tested: Enum_Permissions_Server):
return permission_mask[permission_tested.value]
#************************************************************************************************
# Crafty Permissions Class
#************************************************************************************************
class Enum_Permissions_Crafty(Enum):
Server_Creation = 0
User_Config = 1
Roles_Config = 2
class Permissions_Crafty:
@staticmethod
def get_permissions_list():
permissions_list = []
for member in Enum_Permissions_Crafty.__members__.items():
permissions_list.append(member[1])
return permissions_list
@staticmethod
def get_permissions(permissions_mask):
permissions_list = []
for member in Enum_Permissions_Crafty.__members__.items():
if server_permissions.has_permission(permissions_mask, member[1]):
permissions_list.append(member[1])
return permissions_list
@staticmethod
def has_permission(permission_mask, permission_tested: Enum_Permissions_Crafty):
result = False
if permission_mask[permission_tested.value] == '1':
result = True
return result
@staticmethod
def set_permission(permission_mask, permission_tested: Enum_Permissions_Crafty, value):
l = list(permission_mask)
l[permission_tested.value] = str(value)
permission_mask = ''.join(l)
return permission_mask
@staticmethod
def get_permission(permission_mask, permission_tested: Enum_Permissions_Crafty):
return permission_mask[permission_tested.value]
#************************************************************************************************
# Static Accessors
@ -1159,4 +1081,3 @@ class Permissions_Crafty:
installer = db_builder()
db_helper = db_shortcuts()
server_permissions = Permissions_Servers()
crafty_permissions = Permissions_Crafty()

View File

@ -0,0 +1,102 @@
import os
import sys
import logging
import datetime
from app.classes.shared.helpers import helper
from app.classes.shared.console import console
from app.classes.shared.models import db_helper, server_permissions, Enum_Permissions_Server
logger = logging.getLogger(__name__)
peewee_logger = logging.getLogger('peewee')
peewee_logger.setLevel(logging.INFO)
try:
from peewee import *
from playhouse.shortcuts import model_to_dict
from enum import Enum
import yaml
except ModuleNotFoundError as e:
logger.critical("Import Error: Unable to load {} module".format(e.name), exc_info=True)
console.critical("Import Error: Unable to load {} module".format(e.name))
sys.exit(1)
database = SqliteDatabase(helper.db_path, pragmas={
'journal_mode': 'wal',
'cache_size': -1024 * 10})
#************************************************************************************************
# Crafty Permissions Class
#************************************************************************************************
class Enum_Permissions_Crafty(Enum):
Server_Creation = 0
User_Config = 1
Roles_Config = 2
class Permissions_Crafty:
#************************************************************************************************
# Crafty Permissions Methods
#************************************************************************************************
@staticmethod
def get_permissions_list():
permissions_list = []
for member in Enum_Permissions_Crafty.__members__.items():
permissions_list.append(member[1])
return permissions_list
@staticmethod
def get_permissions(permissions_mask):
permissions_list = []
for member in Enum_Permissions_Crafty.__members__.items():
if crafty_permissions.has_permission(permissions_mask, member[1]):
permissions_list.append(member[1])
return permissions_list
@staticmethod
def has_permission(permission_mask, permission_tested: Enum_Permissions_Crafty):
result = False
if permission_mask[permission_tested.value] == '1':
result = True
return result
@staticmethod
def set_permission(permission_mask, permission_tested: Enum_Permissions_Crafty, value):
l = list(permission_mask)
l[permission_tested.value] = str(value)
permission_mask = ''.join(l)
return permission_mask
@staticmethod
def get_permission(permission_mask, permission_tested: Enum_Permissions_Crafty):
return permission_mask[permission_tested.value]
@staticmethod
def get_crafty_permissions_mask(user_id):
permissions_mask = ''
user_crafty = db_helper.get_User_Crafty(user_id)
permissions_mask = user_crafty.permissions
return permissions_mask
@staticmethod
def get_all_permission_quantity_list():
quantity_list = {
Enum_Permissions_Crafty.Server_Creation.name: -1,
Enum_Permissions_Crafty.User_Config.name: -1,
Enum_Permissions_Crafty.Roles_Config.name: -1,
}
return quantity_list
@staticmethod
def get_permission_quantity_list(user_id):
user_crafty = db_helper.get_User_Crafty(user_id)
quantity_list = {
Enum_Permissions_Crafty.Server_Creation.name: user_crafty.limit_server_creation,
Enum_Permissions_Crafty.User_Config.name: user_crafty.limit_user_creation,
Enum_Permissions_Crafty.Roles_Config.name: user_crafty.limit_role_creation,
}
return quantity_list
crafty_permissions = Permissions_Crafty()

View File

@ -12,7 +12,8 @@ from tornado import iostream
from app.classes.shared.console import console
from app.classes.shared.models import Users, installer
from app.classes.web.base_handler import BaseHandler
from app.classes.shared.models import db_helper, server_permissions, Servers, Enum_Permissions_Server, crafty_permissions, Enum_Permissions_Crafty
from app.classes.shared.models import db_helper, server_permissions, Servers, Enum_Permissions_Server
from app.classes.shared.models_folder.crafty_permissions import crafty_permissions, Enum_Permissions_Crafty
from app.classes.shared.helpers import helper
logger = logging.getLogger(__name__)
@ -37,9 +38,9 @@ class PanelHandler(BaseHandler):
if exec_user['superuser'] == 1:
defined_servers = self.controller.list_defined_servers()
exec_user_role.add("Super User")
exec_user_crafty_permissions = self.controller.list_defined_crafty_permissions()
exec_user_crafty_permissions = self.controller.crafty_perms.list_defined_crafty_permissions()
else:
exec_user_crafty_permissions = self.controller.get_crafty_permissions(exec_user_id)
exec_user_crafty_permissions = self.controller.crafty_perms.get_crafty_permissions_list(exec_user_id)
logger.debug(exec_user['roles'])
for r in exec_user['roles']:
role = db_helper.get_role(r)
@ -365,7 +366,7 @@ class PanelHandler(BaseHandler):
page_data['roles_all'] = db_helper.get_all_roles()
page_data['servers_all'] = self.controller.list_defined_servers()
page_data['permissions_all'] = self.controller.list_defined_crafty_permissions()
page_data['permissions_list'] = self.controller.get_crafty_permissions(user_id)
page_data['permissions_list'] = self.controller.crafty_perms.get_crafty_permissions_list(user_id)
page_data['quantity_server'] = self.controller.list_crafty_permissions_quantity_limits(user_id)
if user_id is None:
@ -566,7 +567,7 @@ class PanelHandler(BaseHandler):
exec_user_role.add("Super User")
exec_user_crafty_permissions = self.controller.list_defined_crafty_permissions()
else:
exec_user_crafty_permissions = self.controller.get_crafty_permissions(exec_user_id)
exec_user_crafty_permissions = self.controller.crafty_perms.get_crafty_permissions_list(exec_user_id)
defined_servers = self.controller.list_authorized_servers(exec_user_id)
for r in exec_user['roles']:
role = db_helper.get_role(r)

View File

@ -6,7 +6,8 @@ import shutil
from app.classes.shared.console import console
from app.classes.web.base_handler import BaseHandler
from app.classes.shared.models import db_helper, Enum_Permissions_Crafty
from app.classes.shared.models import db_helper
from app.classes.shared.models_folder.crafty_permissions import Enum_Permissions_Crafty
from app.classes.minecraft.serverjars import server_jar_obj
from app.classes.shared.helpers import helper
@ -39,7 +40,7 @@ class ServerHandler(BaseHandler):
exec_user_role.add("Super User")
exec_user_crafty_permissions = self.controller.list_defined_crafty_permissions()
else:
exec_user_crafty_permissions = self.controller.get_crafty_permissions(exec_user_id)
exec_user_crafty_permissions = self.controller.crafty_perms.get_crafty_permissions_list(exec_user_id)
defined_servers = self.controller.list_authorized_servers(exec_user_id)
for r in exec_user['roles']:
role = db_helper.get_role(r)