3 require_once "../inc/common.php";
4 require_once "../inc/header.php";
6 if (!current_user_can(PERMISSION_MANAGE_USERS
))
8 echo "<h4>Access denied</h4>";
11 $permissions = get_panel_user_permission_list();
12 $list = get_panel_user_roles_list();
22 if (isset($_POST['add_role_name']) && $role_name = $_POST['add_role_name'])
24 foreach ($list as $name => $u) // don't add it if it already exists
26 if (!strcmp(to_slug($name),to_slug($role_name)))
28 $errors[] = "Cannot create role \"$role_name\": A role with that name already exists.";
32 if (empty($errors)) // so far so good
34 $msg = "Added user role \"$role_name\"";
36 if (isset($_POST['use_dup_role']) && $dup = $_POST['dup_role']) // if they're duplicating a role
38 $permissions = $list[$dup];
39 $msg .= ", a duplicate of \"$dup\"";
42 foreach($permissions as $k => $v)
45 $config['user_roles'][$role_name] = $clean_perms;
46 write_config('user_roles');
48 $list = get_panel_user_roles_list(); // refresh
54 elseif (isset($_POST['del_role_name']) && $role_name = $_POST['del_role_name'])
57 foreach ($list as $name => $u) // don't add it if it already exists
59 if (!strcmp(to_slug($name),to_slug($role_name)))
65 if ($found) // so far so good
67 unset($config['user_roles'][$role_name]);
68 write_config('user_roles');
69 $success[] = "Successfully deleted role \"$role_name\"";
70 $list = get_panel_user_roles_list(); // refresh
73 $errors[] = "Could not delete role \"$role_name\": Role does not exist.";
78 <div
class="container-xxl row justify-content-between">
81 <h4
>User Role Editor
</h4
>
82 <?php
if (!empty($errors)) Message
::Fail($errors); if (!empty($success)) Message
::Success($success); ?>
83 Roles are user categories where each has it
's own set of permissions.<br>
84 Here, you can easily add and edit User Roles to ensure that your team has the appropriate access and permissions they need.<br>
85 Once you've created a role
, you can assign it to a user on your panel
, and they will have the permissions assigned to their role
.<br
><br
>
86 <div
class="font-italic">Some roles are built
-in
and cannot be deleted
or modified
, specifically
"<code>Super Admin</code>" and "<code>Read Only</code>"</div
><br
><br
>
87 Click a role name to view role permissions
.
89 <div
class="col" id
="addnew_collapse">
91 <div
class="card card-body" style
="max-width:550px">
92 <h5
>Create
New Role
</h5
>
93 <div
class="font-italic mb-3">You must create a
new role before you can add permissions to it
.</div
>
94 <div
class="row input-group ml-0 mb-2">
95 <div
class="input-group-prepend">
96 <span
class="input-group-text" style
="width:150px">New Role Name
</span
>
98 <input id
="add_role_name" name
="add_role_name" class="form-control" style
="min-width:100px;max-width:450px" type
="text">
102 <div
class="input-group">
103 <div
class="input-group-prepend">
104 <div style
="width:150px" class="input-group-text">
105 <input id
="use_dup_role" name
="use_dup_role" type
="checkbox" class="mr-2">Duplicate Role
108 <select name
="dup_role" disabled
class="custom-select" id
="dup_role" style
="min-width:100px;max-width:450px">
109 <option value
="0" selected
>None
</option
>
111 foreach($list as $s => $l)
112 echo "<option value=\"$s\">$s</option>";
116 <div
class="mt-2 text-right">
117 <button type
="submit" disabled id
="role_submit" style
="background-color:darkslateblue;color:white" class="btn btn-primary">Create Role
</button
>
126 #permlist #roles_accord .card .card-header .btn-header-link:after {
128 font
-family
: 'Font Awesome 5 Free';
133 #permlist #roles_accord .card .card-header .btn-header-link.collapsed:after {
141 const add_role_name
= document
.getElementById("add_role_name");
142 const use_dup
= document
.getElementById("use_dup_role");
143 const dup_role
= document
.getElementById("dup_role");
144 const role_submit
= document
.getElementById("role_submit");
146 use_dup
.addEventListener('click', e
=> {
147 if (use_dup
.checked
) {
148 dup_role
.disabled
= false;
150 dup_role
.value
= "0";
151 dup_role
.disabled
= true;
155 add_role_name
.addEventListener('input', e
=> {
156 if (!add_role_name
.value
.trim().length
) // disallow names consisting of just spaces... it doesn't break anything, but it's stupid
157 role_submit
.disabled
= true;
159 role_submit
.disabled
= false;
164 generate_role_list($list);
167 require_once "../inc/footer.php";