diff --git a/CHANGELOG.md b/CHANGELOG.md
index d7130183..e1be6c3e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,7 +5,7 @@ TBD
### Bug fixes
- Fix local java server imports. ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/529))
### Tweaks
-TBD
+- Added further login screen customisation settings. ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/531))
### Lang
TBD
diff --git a/app/classes/controllers/management_controller.py b/app/classes/controllers/management_controller.py
index 47860fe1..7e7a38b0 100644
--- a/app/classes/controllers/management_controller.py
+++ b/app/classes/controllers/management_controller.py
@@ -10,6 +10,25 @@ class ManagementController:
def __init__(self, management_helper):
self.management_helper = management_helper
+ # **********************************************************************************
+ # Config Methods
+ # **********************************************************************************
+ @staticmethod
+ def set_login_image(path):
+ HelpersManagement.set_login_image(path)
+
+ @staticmethod
+ def get_login_image():
+ return HelpersManagement.get_login_image()
+
+ @staticmethod
+ def set_login_opacity(opacity):
+ return HelpersManagement.set_login_opacity(opacity)
+
+ @staticmethod
+ def get_login_opacity():
+ return HelpersManagement.get_login_opacity()
+
# **********************************************************************************
# Host_Stats Methods
# **********************************************************************************
@@ -94,14 +113,6 @@ class ManagementController:
def delete_scheduled_task(schedule_id):
return HelpersManagement.delete_scheduled_task(schedule_id)
- @staticmethod
- def set_login_image(path):
- HelpersManagement.set_login_image(path)
-
- @staticmethod
- def get_login_image():
- return HelpersManagement.get_login_image()
-
@staticmethod
def update_scheduled_task(schedule_id, updates):
return HelpersManagement.update_scheduled_task(schedule_id, updates)
diff --git a/app/classes/models/management.py b/app/classes/models/management.py
index 55c86bb7..7eab07a3 100644
--- a/app/classes/models/management.py
+++ b/app/classes/models/management.py
@@ -44,6 +44,7 @@ class AuditLog(BaseModel):
class CraftySettings(BaseModel):
secret_api_key = CharField(default="")
login_photo = CharField(default="login_1.jpg")
+ login_opacity = IntegerField(default=100)
class Meta:
table_name = "crafty_settings"
@@ -255,6 +256,9 @@ class HelpersManagement:
)
return settings[0].secret_api_key
+ # **********************************************************************************
+ # Config Methods
+ # **********************************************************************************
@staticmethod
def get_login_image():
settings = CraftySettings.select(CraftySettings.login_photo).where(
@@ -268,6 +272,19 @@ class HelpersManagement:
CraftySettings.id == 1
).execute()
+ @staticmethod
+ def get_login_opacity():
+ settings = CraftySettings.select(CraftySettings.login_opacity).where(
+ CraftySettings.id == 1
+ )
+ return settings[0].login_opacity
+
+ @staticmethod
+ def set_login_opacity(opacity):
+ CraftySettings.update({CraftySettings.login_opacity: opacity}).where(
+ CraftySettings.id == 1
+ ).execute()
+
# **********************************************************************************
# Schedules Methods
# **********************************************************************************
diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py
index cdd67146..7d03a052 100644
--- a/app/classes/web/ajax_handler.py
+++ b/app/classes/web/ajax_handler.py
@@ -355,7 +355,9 @@ class AjaxHandler(BaseHandler):
elif page == "select_photo":
if exec_user["superuser"]:
- photo = self.get_argument("photo", None)
+ photo = urllib.parse.unquote(self.get_argument("photo", ""))
+ opacity = self.get_argument("opacity", 100)
+ self.controller.management.set_login_opacity(int(opacity))
if photo == "login_1.jpg":
self.controller.management.set_login_image("login_1.jpg")
self.controller.cached_login = f"{photo}"
@@ -366,7 +368,7 @@ class AjaxHandler(BaseHandler):
elif page == "delete_photo":
if exec_user["superuser"]:
- photo = self.get_argument("photo", None)
+ photo = urllib.parse.unquote(self.get_argument("photo", None))
if photo and photo != "login_1.jpg":
os.remove(
os.path.join(
diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py
index 582517db..0e61f640 100644
--- a/app/classes/web/panel_handler.py
+++ b/app/classes/web/panel_handler.py
@@ -291,6 +291,7 @@ class PanelHandler(BaseHandler):
# todo: make this actually pull and compare version data
"update_available": self.helper.update_available,
"background": self.controller.cached_login,
+ "login_opacity": self.controller.management.get_login_opacity(),
"serverTZ": tz,
"version_data": self.helper.get_version_string(),
"failed_servers": self.controller.servers.failed_servers,
@@ -883,6 +884,9 @@ class PanelHandler(BaseHandler):
if item not in page_data["backgrounds"]:
page_data["backgrounds"].append(item)
page_data["background"] = self.controller.cached_login
+ page_data[
+ "login_opacity"
+ ] = self.controller.management.get_login_opacity()
else:
page_data["managed_users"] = self.controller.users.get_managed_users(
exec_user["user_id"]
diff --git a/app/classes/web/public_handler.py b/app/classes/web/public_handler.py
index 7f3f0c26..846402c3 100644
--- a/app/classes/web/public_handler.py
+++ b/app/classes/web/public_handler.py
@@ -40,6 +40,7 @@ class PublicHandler(BaseHandler):
"lang_page": self.helper.get_lang_page(self.helper.get_setting("language")),
"query": "",
"background": self.controller.cached_login,
+ "login_opacity": self.controller.management.get_login_opacity(),
}
if self.request.query:
diff --git a/app/frontend/templates/panel/denied.html b/app/frontend/templates/panel/denied.html
index f924e553..717c0def 100644
--- a/app/frontend/templates/panel/denied.html
+++ b/app/frontend/templates/panel/denied.html
@@ -1,69 +1,82 @@
-
- -