mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Adding Support For Server Creation Quantity Limit
This commit is contained in:
parent
bb1f43bc81
commit
397fbd5268
@ -147,9 +147,18 @@ class Controller:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def can_create_server(user_id):
|
def can_create_server(user_id):
|
||||||
permissions_mask = db_helper.get_crafty_permissions_mask(user_id)
|
return db_helper.can_add_in_crafty(user_id, Enum_Permissions_Crafty.Server_Creation)
|
||||||
return crafty_permissions.has_permission(permissions_mask, Enum_Permissions_Crafty.Server_Creation)
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def can_add_user(user_id):
|
||||||
|
#TODO: Complete if we need a User Addition limit
|
||||||
|
return True
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def can_add_role(user_id):
|
||||||
|
#TODO: Complete if we need a User Addition limit
|
||||||
|
return True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def list_all_crafty_permissions_quantity_limits():
|
def list_all_crafty_permissions_quantity_limits():
|
||||||
return db_helper.get_all_permission_quantity_list()
|
return db_helper.get_all_permission_quantity_list()
|
||||||
|
@ -135,6 +135,9 @@ class User_Crafty(Model):
|
|||||||
limit_server_creation = IntegerField(default=-1)
|
limit_server_creation = IntegerField(default=-1)
|
||||||
limit_user_creation = IntegerField(default=0)
|
limit_user_creation = IntegerField(default=0)
|
||||||
limit_role_creation = IntegerField(default=0)
|
limit_role_creation = IntegerField(default=0)
|
||||||
|
created_server = IntegerField(default=0)
|
||||||
|
created_user = IntegerField(default=0)
|
||||||
|
created_role = IntegerField(default=0)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
table_name = 'user_crafty'
|
table_name = 'user_crafty'
|
||||||
@ -468,7 +471,38 @@ class db_shortcuts:
|
|||||||
Enum_Permissions_Crafty.Roles_Config.name: user_crafty.limit_role_creation,
|
Enum_Permissions_Crafty.Roles_Config.name: user_crafty.limit_role_creation,
|
||||||
}
|
}
|
||||||
return quantity_list
|
return quantity_list
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_created_quantity_list(user_id):
|
||||||
|
user_crafty = User_Crafty.select().where(User_Crafty.user_id == user_id).get()
|
||||||
|
quantity_list = {
|
||||||
|
Enum_Permissions_Crafty.Server_Creation.name: user_crafty.created_server,
|
||||||
|
Enum_Permissions_Crafty.User_Config.name: user_crafty.created_user,
|
||||||
|
Enum_Permissions_Crafty.Roles_Config.name: user_crafty.created_role,
|
||||||
|
}
|
||||||
|
return quantity_list
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_crafty_limit_value(user_id, permission):
|
||||||
|
user_crafty = User_Crafty.select().where(User_Crafty.user_id == user_id).get()
|
||||||
|
quantity_list = get_permission_quantity_list(user_id)
|
||||||
|
return quantity_list[permission]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def can_add_in_crafty(user_id, permission):
|
||||||
|
user_crafty = User_Crafty.select().where(User_Crafty.user_id == user_id).get()
|
||||||
|
can = crafty_permissions.has_permission(user_crafty.permissions, permission)
|
||||||
|
limit_list = db_helper.get_permission_quantity_list(user_id)
|
||||||
|
quantity_list = db_helper.get_created_quantity_list(user_id)
|
||||||
|
return can and quantity_list[permission.name] < limit_list[permission.name]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def add_server_creation(user_id):
|
||||||
|
user_crafty = User_Crafty.select().where(User_Crafty.user_id == user_id).get()
|
||||||
|
user_crafty.created_server += 1
|
||||||
|
User_Crafty.save(user_crafty)
|
||||||
|
return user_crafty.created_server
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_latest_hosts_stats():
|
def get_latest_hosts_stats():
|
||||||
query = Host_Stats.select().order_by(Host_Stats.id.desc()).get()
|
query = Host_Stats.select().order_by(Host_Stats.id.desc()).get()
|
||||||
|
@ -69,8 +69,8 @@ class ServerHandler(BaseHandler):
|
|||||||
|
|
||||||
if page == "step1":
|
if page == "step1":
|
||||||
|
|
||||||
if not self.controller.can_create_server(exec_user_id):
|
if not exec_user['superuser'] and not self.controller.can_create_server(exec_user_id):
|
||||||
self.redirect("/panel/error?error=Unauthorized access: not at server creator")
|
self.redirect("/panel/error?error=Unauthorized access: not a server creator or server limit reached")
|
||||||
return
|
return
|
||||||
|
|
||||||
page_data['server_types'] = server_jar_obj.get_serverjar_data_sorted()
|
page_data['server_types'] = server_jar_obj.get_serverjar_data_sorted()
|
||||||
@ -204,6 +204,8 @@ class ServerHandler(BaseHandler):
|
|||||||
role_id = db_helper.add_role("Creator of Server with id={}".format(new_server_id))
|
role_id = db_helper.add_role("Creator of Server with id={}".format(new_server_id))
|
||||||
db_helper.add_role_server(new_server_id, role_id, "11111111")
|
db_helper.add_role_server(new_server_id, role_id, "11111111")
|
||||||
db_helper.add_role_to_user(exec_user_id, role_id)
|
db_helper.add_role_to_user(exec_user_id, role_id)
|
||||||
|
if not exec_user['superuser']:
|
||||||
|
db_helper.add_server_creation(exec_user_id)
|
||||||
|
|
||||||
self.controller.stats.record_stats()
|
self.controller.stats.record_stats()
|
||||||
self.redirect("/panel/dashboard")
|
self.redirect("/panel/dashboard")
|
||||||
|
@ -4,6 +4,9 @@ import peewee
|
|||||||
def migrate(migrator, database, **kwargs):
|
def migrate(migrator, database, **kwargs):
|
||||||
migrator.add_columns('user_crafty', limit_user_creation=peewee.IntegerField(default=0))
|
migrator.add_columns('user_crafty', limit_user_creation=peewee.IntegerField(default=0))
|
||||||
migrator.add_columns('user_crafty', limit_role_creation=peewee.IntegerField(default=0))
|
migrator.add_columns('user_crafty', limit_role_creation=peewee.IntegerField(default=0))
|
||||||
|
migrator.add_columns('user_crafty', created_server=peewee.IntegerField(default=0))
|
||||||
|
migrator.add_columns('user_crafty', created_user=peewee.IntegerField(default=0))
|
||||||
|
migrator.add_columns('user_crafty', created_role=peewee.IntegerField(default=0))
|
||||||
"""
|
"""
|
||||||
Write your migrations here.
|
Write your migrations here.
|
||||||
"""
|
"""
|
||||||
@ -13,6 +16,9 @@ def migrate(migrator, database, **kwargs):
|
|||||||
def rollback(migrator, database, **kwargs):
|
def rollback(migrator, database, **kwargs):
|
||||||
migrator.drop_columns('user_crafty', ['limit_user_creation'])
|
migrator.drop_columns('user_crafty', ['limit_user_creation'])
|
||||||
migrator.drop_columns('user_crafty', ['limit_role_creation'])
|
migrator.drop_columns('user_crafty', ['limit_role_creation'])
|
||||||
|
migrator.drop_columns('user_crafty', ['created_server'])
|
||||||
|
migrator.drop_columns('user_crafty', ['created_user'])
|
||||||
|
migrator.drop_columns('user_crafty', ['created_role'])
|
||||||
"""
|
"""
|
||||||
Write your rollback migrations here.
|
Write your rollback migrations here.
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user