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\"";
41 $settings = DbSettings
::get();
43 foreach($permissions as $k => $v)
46 $settings['user_roles'][$role_name] = $clean_perms;
47 DbSettings
::set('user_roles', $settings['user_roles']);
49 $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 $settings = DbSettings
::get();
68 unset($settings['user_roles'][$role_name]);
69 DbSettings
::set('user_roles', $settings['user_roles']);
70 $success[] = "Successfully deleted role \"$role_name\"";
71 $list = get_panel_user_roles_list(); // refresh
74 $errors[] = "Could not delete role \"$role_name\": Role does not exist.";
79 <div
class="container-xxl row justify-content-between">
82 <h4
>User Role Editor
</h4
>
83 <?php
if (!empty($errors)) Message
::Fail($errors); if (!empty($success)) Message
::Success($success); ?>
84 Roles are user categories where each has it
's own set of permissions.<br>
85 Here, you can easily add and edit User Roles to ensure that your team has the appropriate access and permissions they need.<br>
86 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
>
87 <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
>
88 Click a role name to view role permissions
.
90 <div
class="col" id
="addnew_collapse">
92 <div
class="card card-body" style
="max-width:550px">
93 <h5
>Create
New Role
</h5
>
94 <div
class="font-italic mb-3">You must create a
new role before you can add permissions to it
.</div
>
95 <div
class="row input-group ml-0 mb-2">
96 <div
class="input-group-prepend">
97 <span
class="input-group-text" style
="width:150px">New Role Name
</span
>
99 <input id
="add_role_name" name
="add_role_name" class="form-control" style
="min-width:100px;max-width:450px" type
="text">
103 <div
class="input-group">
104 <div
class="input-group-prepend">
105 <div style
="width:150px" class="input-group-text">
106 <input id
="use_dup_role" name
="use_dup_role" type
="checkbox" class="mr-2">Duplicate Role
109 <select name
="dup_role" disabled
class="custom-select" id
="dup_role" style
="min-width:100px;max-width:450px">
110 <option value
="0" selected
>None
</option
>
112 foreach($list as $s => $l)
113 echo "<option value=\"$s\">$s</option>";
117 <div
class="mt-2 text-right">
118 <button type
="submit" disabled id
="role_submit" style
="background-color:darkslateblue;color:white" class="btn btn-primary">Create Role
</button
>
127 #permlist #roles_accord .card .card-header .btn-header-link:after {
129 font
-family
: 'Font Awesome 5 Free';
134 #permlist #roles_accord .card .card-header .btn-header-link.collapsed:after {
142 const add_role_name
= document
.getElementById("add_role_name");
143 const use_dup
= document
.getElementById("use_dup_role");
144 const dup_role
= document
.getElementById("dup_role");
145 const role_submit
= document
.getElementById("role_submit");
147 use_dup
.addEventListener('click', e
=> {
148 if (use_dup
.checked
) {
149 dup_role
.disabled
= false;
151 dup_role
.value
= "0";
152 dup_role
.disabled
= true;
156 add_role_name
.addEventListener('input', e
=> {
157 if (!add_role_name
.value
.length
)
158 role_submit
.disabled
= true;
160 role_submit
.disabled
= false;
165 generate_role_list($list);
168 require_once "../inc/footer.php";