define('HOOKTYPE_EDIT_USER', 117);
+define('HOOKTYPE_USER_ROLE_LIST', 118);
+
+define('HOOKTYPE_EDIT_ROLE', 119);
+
define('HOOKTYPE_AUTH_MOD', 200);
<?php
}
}
+
+function get_panel_user_roles_list()
+{
+ /* Defaults */
+ $list = [
+ "Super Admin" => get_panel_user_permission_list(), // SuperAdmin can do everything
+ "Read Only" => [], // Read Only can do nothing
+ ];
+
+ Hook::run(HOOKTYPE_USER_ROLE_LIST, $list);
+ return $list;
+}
+
+function generate_role_list($list)
+{
+ $list2 = get_panel_user_permission_list();
+ ?>
+ <h5>Roles List:</h5>
+ <div id="permlist">
+ <div class="container-xxl">
+ <div class="accordion" id="roles_accord">
+
+<?php foreach($list as $role => $slug) {?>
+ <div class="card">
+ <div class="card-header" id="<?php echo to_slug($role); ?>_heading">
+ <div class="btn-header-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#collapse_<?php echo to_slug($role); ?>" aria-expanded="true" aria-controls="collapse_<?php echo to_slug($role); ?>">
+ <?php echo $role ?>
+ </div>
+ </div>
+
+ <div id="collapse_<?php echo to_slug($role); ?>" class="collapse" aria-labelledby="<?php echo to_slug($role); ?>_heading" data-parent="#roles_accord">
+ <div id="results_rpc" class="card-body">
+ <?php
+ foreach($list2 as $desc => $slug)
+ {
+ $attributes = "";
+ $attributes .= ($role == "Super Admin" || $role == "Read Only") ? "disabled " : "";
+
+ ?>
+ <div class="input-group">
+ <div class="input-group-prepend">
+ <div class="input-group-text">
+ <input <?php
+ $attributes .= (in_array($slug, $list[$role])) ? "checked" : "";
+ echo $attributes;
+ ?> name="<?php echo to_slug($role); ?>_permissions[]" value="<?php echo $slug; ?>" type="checkbox">
+ </div>
+ </div>
+ <input type="text" readonly class="form-control" value="<?php echo "$desc ($slug)"; ?>">
+ </div>
+
+ <?php
+ }
+ ?>
+ </div>
+ </div>
+ </div>
+<?php }?>
+
+ </div></div><br>
+ <button type="submit" class="btn btn-primary">Save changes</div>
+</div><?php
+
+}
<?php
+function to_slug($str)
+{
+ return str_replace(['-', ' '], '_', strtolower($str));
+}
+
/** Splits up a string by a space
* (chr 32)
*
}
}
}
-
$userlist = [];
Hook::run(HOOKTYPE_GET_USER_LIST, $userlist);
--- /dev/null
+<?php
+
+require_once "../common.php";
+require_once "../header.php";
+do_log($_POST);
+
+$permissions = get_panel_user_permission_list();
+$list = get_panel_user_roles_list();
+?>
+
+<h4>User Role Editor</h4>
+
+Here, you can easily edit user roles to ensure that your team has the appropriate access and permissions they need.<br>
+Some roles are built-in and cannot be deleted or modified.<br><br>
+Click a role name to view role permissions.<br><br>
+
+<style>
+
+#permlist #roles_accord .card .card-header .btn-header-link:after {
+ content: "\f106";
+ font-family: 'Font Awesome 5 Free';
+ font-weight: 900;
+ float: right;
+}
+
+#permlist #roles_accord .card .card-header .btn-header-link.collapsed:after {
+ content: "\f107";
+}
+
+</style>
+<div class="row container">
+<p>
+ <button style="background-color:darkslateblue;color:white" class="btn mr-4" type="button" data-toggle="collapse" data-target="#addnew_collapse" aria-expanded="false" aria-controls="addnew_collapse">
+ Create new User Role
+ </button>
+</p>
+<div class="collapse" id="addnew_collapse">
+ <div class="card card-body" style="max-width:550px">
+ <div class="mb-3">Creating a new role:</div>
+ <div class="row input-group ml-0">
+ <div class="input-group-prepend">
+ <span class="input-group-text">Role name</span>
+ </div>
+ <input class="form-control" style="max-width:450px" type="text">
+ <div class="input-group-append">
+ <button style="background-color:darkslateblue;color:white" class="btn btn-primary">Create role</button>
+ </div>
+ </div>
+ <div class="mt-3 font-italic">Note: You must create a new role before you can add permissions to it.</div>
+ </div>
+</div></div>
+<?php
+
+generate_role_list($list);
+
+require_once "../footer.php";
\ No newline at end of file