mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Merge branch 'server-role-creation' into 'dev'
Adds checkbox option for adding roles at server creation. See merge request crafty-controller/crafty-commander!86
This commit is contained in:
commit
b92b9c04fb
@ -315,7 +315,8 @@ class PanelHandler(BaseHandler):
|
|||||||
user_servers = self.controller.servers.get_authorized_servers(user.user_id)
|
user_servers = self.controller.servers.get_authorized_servers(user.user_id)
|
||||||
servers = []
|
servers = []
|
||||||
for server in user_servers:
|
for server in user_servers:
|
||||||
servers.append(server['server_name'])
|
if server['server_name'] not in servers:
|
||||||
|
servers.append(server['server_name'])
|
||||||
new_item = {user.user_id: servers}
|
new_item = {user.user_id: servers}
|
||||||
auth_servers.update(new_item)
|
auth_servers.update(new_item)
|
||||||
data = {user.user_id: user_roles_list}
|
data = {user.user_id: user_roles_list}
|
||||||
|
@ -38,12 +38,17 @@ class ServerHandler(BaseHandler):
|
|||||||
defined_servers = self.controller.list_defined_servers()
|
defined_servers = self.controller.list_defined_servers()
|
||||||
exec_user_role.add("Super User")
|
exec_user_role.add("Super User")
|
||||||
exec_user_crafty_permissions = self.controller.crafty_perms.list_defined_crafty_permissions()
|
exec_user_crafty_permissions = self.controller.crafty_perms.list_defined_crafty_permissions()
|
||||||
|
list_roles = []
|
||||||
|
for role in self.controller.roles.get_all_roles():
|
||||||
|
list_roles.append(self.controller.roles.get_role(role.role_id))
|
||||||
else:
|
else:
|
||||||
exec_user_crafty_permissions = self.controller.crafty_perms.get_crafty_permissions_list(exec_user_id)
|
exec_user_crafty_permissions = self.controller.crafty_perms.get_crafty_permissions_list(exec_user_id)
|
||||||
defined_servers = self.controller.servers.get_authorized_servers(exec_user_id)
|
defined_servers = self.controller.servers.get_authorized_servers(exec_user_id)
|
||||||
|
list_roles = []
|
||||||
for r in exec_user['roles']:
|
for r in exec_user['roles']:
|
||||||
role = self.controller.roles.get_role(r)
|
role = self.controller.roles.get_role(r)
|
||||||
exec_user_role.add(role['role_name'])
|
exec_user_role.add(role['role_name'])
|
||||||
|
list_roles.append(self.controller.roles.get_role(role['role_id']))
|
||||||
|
|
||||||
template = "public/404.html"
|
template = "public/404.html"
|
||||||
|
|
||||||
@ -51,6 +56,7 @@ class ServerHandler(BaseHandler):
|
|||||||
'version_data': helper.get_version_string(),
|
'version_data': helper.get_version_string(),
|
||||||
'user_data': exec_user_data,
|
'user_data': exec_user_data,
|
||||||
'user_role' : exec_user_role,
|
'user_role' : exec_user_role,
|
||||||
|
'roles' : list_roles,
|
||||||
'user_crafty_permissions' : exec_user_crafty_permissions,
|
'user_crafty_permissions' : exec_user_crafty_permissions,
|
||||||
'crafty_permissions': {
|
'crafty_permissions': {
|
||||||
'Server_Creation': Enum_Permissions_Crafty.Server_Creation,
|
'Server_Creation': Enum_Permissions_Crafty.Server_Creation,
|
||||||
@ -67,6 +73,8 @@ class ServerHandler(BaseHandler):
|
|||||||
'show_contribute': helper.get_setting("show_contribute_link", True),
|
'show_contribute': helper.get_setting("show_contribute_link", True),
|
||||||
'lang': self.controller.users.get_user_lang_by_id(exec_user_id)
|
'lang': self.controller.users.get_user_lang_by_id(exec_user_id)
|
||||||
}
|
}
|
||||||
|
if exec_user['superuser'] == 1:
|
||||||
|
page_data['roles'] = list_roles
|
||||||
|
|
||||||
if page == "step1":
|
if page == "step1":
|
||||||
if not exec_user['superuser'] and not self.controller.crafty_perms.can_create_server(exec_user_id):
|
if not exec_user['superuser'] and not self.controller.crafty_perms.can_create_server(exec_user_id):
|
||||||
@ -147,6 +155,10 @@ class ServerHandler(BaseHandler):
|
|||||||
|
|
||||||
if page == "step1":
|
if page == "step1":
|
||||||
|
|
||||||
|
if not exec_user['superuser']:
|
||||||
|
user_roles = self.controller.roles.get_all_roles()
|
||||||
|
else:
|
||||||
|
user_roles = self.controller.roles.get_all_roles()
|
||||||
server = bleach.clean(self.get_argument('server', ''))
|
server = bleach.clean(self.get_argument('server', ''))
|
||||||
server_name = bleach.clean(self.get_argument('server_name', ''))
|
server_name = bleach.clean(self.get_argument('server_name', ''))
|
||||||
min_mem = bleach.clean(self.get_argument('min_memory', ''))
|
min_mem = bleach.clean(self.get_argument('min_memory', ''))
|
||||||
@ -156,6 +168,13 @@ class ServerHandler(BaseHandler):
|
|||||||
import_server_path = bleach.clean(self.get_argument('server_path', ''))
|
import_server_path = bleach.clean(self.get_argument('server_path', ''))
|
||||||
import_server_jar = bleach.clean(self.get_argument('server_jar', ''))
|
import_server_jar = bleach.clean(self.get_argument('server_jar', ''))
|
||||||
server_parts = server.split("|")
|
server_parts = server.split("|")
|
||||||
|
captured_roles = []
|
||||||
|
for role in user_roles:
|
||||||
|
try:
|
||||||
|
if bleach.clean(self.get_argument(str(role), '')) == "on":
|
||||||
|
captured_roles.append(role)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
if not server_name:
|
if not server_name:
|
||||||
self.redirect("/panel/error?error=Server name cannot be empty!")
|
self.redirect("/panel/error?error=Server name cannot be empty!")
|
||||||
@ -202,12 +221,18 @@ class ServerHandler(BaseHandler):
|
|||||||
self.get_remote_ip())
|
self.get_remote_ip())
|
||||||
|
|
||||||
# These lines create a new Role for the Server with full permissions and add the user to it if he's not a superuser
|
# These lines create a new Role for the Server with full permissions and add the user to it if he's not a superuser
|
||||||
if not exec_user['superuser']:
|
if len(captured_roles) == 0:
|
||||||
new_server_uuid = self.controller.servers.get_server_data_by_id(new_server_id).get("server_uuid")
|
if not exec_user['superuser']:
|
||||||
role_id = self.controller.roles.add_role("Creator of Server with uuid={}".format(new_server_uuid))
|
new_server_uuid = self.controller.servers.get_server_data_by_id(new_server_id).get("server_uuid")
|
||||||
self.controller.server_perms.add_role_server(new_server_id, role_id, "11111111")
|
role_id = self.controller.roles.add_role("Creator of Server with uuid={}".format(new_server_uuid))
|
||||||
self.controller.users.add_role_to_user(exec_user_id, role_id)
|
self.controller.server_perms.add_role_server(new_server_id, role_id, "11111111")
|
||||||
self.controller.crafty_perms.add_server_creation(exec_user_id)
|
self.controller.users.add_role_to_user(exec_user_id, role_id)
|
||||||
|
self.controller.crafty_perms.add_server_creation(exec_user_id)
|
||||||
|
|
||||||
|
else:
|
||||||
|
for role in captured_roles:
|
||||||
|
role_id = role
|
||||||
|
self.controller.server_perms.add_role_server(new_server_id, role_id, "11111111")
|
||||||
|
|
||||||
self.controller.stats.record_stats()
|
self.controller.stats.record_stats()
|
||||||
self.redirect("/panel/dashboard")
|
self.redirect("/panel/dashboard")
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="content-wrapper">
|
<div class="content-wrapper">
|
||||||
|
<div class="d-none" id="overlay" onclick="hide(event)"></div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6 grid-margin stretch-card">
|
<div class="col-sm-6 grid-margin stretch-card">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
@ -70,6 +71,29 @@
|
|||||||
<input type="number" class="form-control" id="port1" name="port" value="25565" step="1" min="1">
|
<input type="number" class="form-control" id="port1" name="port" value="25565" step="1" min="1">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<div id="accordion-1">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header p-2" id="Role-1">
|
||||||
|
<p class="mb-0 p-0" data-toggle="collapse" data-target="#collapseRole-1" aria-expanded="true" aria-controls="collapseRole-1">
|
||||||
|
<i class="fas fa-chevron-down"></i> {{ translate('serverWizard', 'addRole', data['lang']) }} <small style="text-transform: none;"> - {{ translate('serverWizard', 'autoCreate', data['lang']) }}</small>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="collapseRole-1" class="collapse" aria-labelledby="Role-1" data-parent="">
|
||||||
|
<div class="card-body scroll">
|
||||||
|
<div class="form-group">
|
||||||
|
{% for r in data['roles'] %}
|
||||||
|
<span class="d-block menu-option"><label><input name="{{ r['role_id'] }}" type="checkbox">
|
||||||
|
{{ r['role_name'].capitalize() }}</label></span>
|
||||||
|
{% end %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary mr-2" onclick="wait_msg()">{{ translate('serverWizard', 'buildServer', data['lang']) }}</button>
|
<button type="submit" class="btn btn-primary mr-2" onclick="wait_msg()">{{ translate('serverWizard', 'buildServer', data['lang']) }}</button>
|
||||||
@ -143,7 +167,29 @@
|
|||||||
<input type="number" class="form-control" id="port2" name="port" value="25565" step="1" min="1">
|
<input type="number" class="form-control" id="port2" name="port" value="25565" step="1" min="1">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<div id="accordion-2">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header p-2" id="Role-2">
|
||||||
|
<p class="mb-0 p-0" data-toggle="collapse" data-target="#collapseRole-2" aria-expanded="true" aria-controls="collapseRole-2">
|
||||||
|
<i class="fas fa-chevron-down"></i> {{ translate('serverWizard', 'addRole', data['lang']) }} <small style="text-transform: none;"> - {{ translate('serverWizard', 'autoCreate', data['lang']) }}</small>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="collapseRole-2" class="collapse" aria-labelledby="Role-2" data-parent="">
|
||||||
|
<div class="card-body scroll">
|
||||||
|
<div class="form-group">
|
||||||
|
{% for r in data['roles'] %}
|
||||||
|
<span class="d-block menu-option"><label><input name="{{ r['role_id'] }}" type="checkbox">
|
||||||
|
{{ r['role_name'].capitalize() }}</label></span>
|
||||||
|
{% end %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary mr-2" onclick="wait_msg(true)">{{ translate('serverWizard', 'importServerButton', data['lang']) }}</button>
|
<button type="submit" class="btn btn-primary mr-2" onclick="wait_msg(true)">{{ translate('serverWizard', 'importServerButton', data['lang']) }}</button>
|
||||||
<button type="reset" class="btn btn-danger mr-2">{{ translate('serverWizard', 'resetForm', data['lang']) }}</button>
|
<button type="reset" class="btn btn-danger mr-2">{{ translate('serverWizard', 'resetForm', data['lang']) }}</button>
|
||||||
@ -218,6 +264,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<div id="accordion-3">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header p-2" id="Role-3">
|
||||||
|
<p class="mb-0 p-0" data-toggle="collapse" data-target="#collapseRole-3" aria-expanded="true" aria-controls="collapseRole-3">
|
||||||
|
<i class="fas fa-chevron-down"></i> {{ translate('serverWizard', 'addRole', data['lang']) }} <small style="text-transform: none;"> - {{ translate('serverWizard', 'autoCreate', data['lang']) }}</small>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="collapseRole-3" class="collapse" aria-labelledby="Role-3" data-parent="">
|
||||||
|
<div class="card-body scroll">
|
||||||
|
<div class="form-group">
|
||||||
|
{% for r in data['roles'] %}
|
||||||
|
<span class="d-block menu-option"><label><input name="{{ r['role_id'] }}" type="checkbox">
|
||||||
|
{{ r['role_name'].capitalize() }}</label></span>
|
||||||
|
{% end %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary mr-2" onclick="wait_msg(true)">{{ translate('serverWizard', 'importServerButton', data['lang']) }}</button>
|
<button type="submit" class="btn btn-primary mr-2" onclick="wait_msg(true)">{{ translate('serverWizard', 'importServerButton', data['lang']) }}</button>
|
||||||
<button type="reset" class="btn btn-danger mr-2">{{ translate('serverWizard', 'resetForm', data['lang']) }}</button>
|
<button type="reset" class="btn btn-danger mr-2">{{ translate('serverWizard', 'resetForm', data['lang']) }}</button>
|
||||||
@ -229,12 +299,52 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<style>
|
||||||
|
.scroll {
|
||||||
|
max-height: 12em;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.menu-btn {
|
||||||
|
font-size: 0.9em;
|
||||||
|
padding: 2px 10px;
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
padding-top: 10px;
|
||||||
|
z-index: 200;
|
||||||
|
margin-top: 4px;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #2a2c44;
|
||||||
|
}
|
||||||
|
.menu-option {
|
||||||
|
padding: 6px 20px 6px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
#overlay {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
{% end %}
|
{% end %}
|
||||||
|
|
||||||
{% block js%}
|
{% block js%}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
function dropDown(event) {
|
||||||
|
event.target.parentElement.children[1].classList.remove("d-none");
|
||||||
|
document.getElementById("overlay").classList.remove("d-none");
|
||||||
|
}
|
||||||
|
function hide(event) {
|
||||||
|
var items = document.getElementsByClassName('menu');
|
||||||
|
for (let i = 0; i < items.length; i++) {
|
||||||
|
items[i].classList.add("d-none");
|
||||||
|
}
|
||||||
|
document.getElementById("overlay").classList.add("d-none");
|
||||||
|
}
|
||||||
$( document ).ready(function() {
|
$( document ).ready(function() {
|
||||||
console.log('ready');
|
console.log('ready');
|
||||||
var forms = $('form.server-wizard');
|
var forms = $('form.server-wizard');
|
||||||
|
@ -59,7 +59,10 @@
|
|||||||
"myNewServer": "My New Server",
|
"myNewServer": "My New Server",
|
||||||
"bePatient": "Please be patient as we ' + (importing ? 'import' : 'download') + ' the server",
|
"bePatient": "Please be patient as we ' + (importing ? 'import' : 'download') + ' the server",
|
||||||
"importing": "Importing Server...",
|
"importing": "Importing Server...",
|
||||||
"downloading": "Downloading Server..."
|
"downloading": "Downloading Server...",
|
||||||
|
"addRole": "Add Server to Existing Role(s)",
|
||||||
|
"autoCreate": "If none are selected Crafty will make one!",
|
||||||
|
"selectRole": "Select Role(s)"
|
||||||
},
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"dashboard": "Dashboard",
|
"dashboard": "Dashboard",
|
||||||
|
@ -59,7 +59,11 @@
|
|||||||
"myNewServer": "Minun uusi palvelin",
|
"myNewServer": "Minun uusi palvelin",
|
||||||
"bePatient": "Ole kärsivällinen, kun ' + (importing ? 'tuomme' : 'lataamme') + ' palvelinta",
|
"bePatient": "Ole kärsivällinen, kun ' + (importing ? 'tuomme' : 'lataamme') + ' palvelinta",
|
||||||
"importing": "Tuomme palvelinta...",
|
"importing": "Tuomme palvelinta...",
|
||||||
"downloading": "Lataamme palvelinta..."
|
"downloading": "Lataamme palvelinta...",
|
||||||
|
"addRole": "Lisää Palvelin Olemassa Oleviin Rooleihin",
|
||||||
|
"autoCreate": "Jos ketään ei valita, Crafty tekee sellaisen!",
|
||||||
|
"selectRole": "Valitse roolit"
|
||||||
|
|
||||||
},
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"dashboard": "Kojelauta",
|
"dashboard": "Kojelauta",
|
||||||
|
@ -59,7 +59,10 @@
|
|||||||
"myNewServer": "Mon Nouveau Serveur",
|
"myNewServer": "Mon Nouveau Serveur",
|
||||||
"bePatient": "Merci de patienter pendant que nous ' + (importing ? 'importons' : 'téléchargeons') + ' le serveur",
|
"bePatient": "Merci de patienter pendant que nous ' + (importing ? 'importons' : 'téléchargeons') + ' le serveur",
|
||||||
"importing": "Importation du Serveur ...",
|
"importing": "Importation du Serveur ...",
|
||||||
"downloading": "Téléchargement du Serveur ..."
|
"downloading": "Téléchargement du Serveur ...",
|
||||||
|
"addRole": "Ajouter le server au(x) rôle(s) existant(s)",
|
||||||
|
"autoCreate": "Si aucun n'est sélectionné, Crafty en créera un !",
|
||||||
|
"selectRole": "Sélectionnez le rôle(s)"
|
||||||
},
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"dashboard": "Tableau de Bord",
|
"dashboard": "Tableau de Bord",
|
||||||
|
Loading…
Reference in New Issue
Block a user