]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/commitdiff
Add the beginning of user roles
authorValerie Pond <redacted>
Fri, 21 Apr 2023 00:54:04 +0000 (01:54 +0100)
committerValerie Pond <redacted>
Fri, 21 Apr 2023 00:54:04 +0000 (01:54 +0100)
Classes/class-hook.php
Classes/class-paneluser.php
misc/strings.php
settings/index.php
settings/user-role-edit.php [new file with mode: 0644]

index fc7f71ac37ea293baa188dfcdc7e9fc85a44a337..cab4ef327675d934394a351403afd3bfec9cfe0e 100644 (file)
@@ -133,6 +133,10 @@ define('HOOKTYPE_USER_PERMISSION_LIST', 116);
 
 define('HOOKTYPE_EDIT_USER', 117);
 
+define('HOOKTYPE_USER_ROLE_LIST', 118);
+
+define('HOOKTYPE_EDIT_ROLE', 119);
+
 
 
 define('HOOKTYPE_AUTH_MOD', 200);
index 475819876175f4c127658fe2c3d675b58acb31e4..a13b6232c7d8050afd18a51d332b3a48461fb633 100644 (file)
@@ -328,3 +328,67 @@ function generate_panel_user_permission_table($user)
                <?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
+
+}
index 1fecc53c443c2fe96f9f3544faed116ee44cc5a9..25cbdba5ae7f7a4b352ca2c91840ab7c73ee6334 100644 (file)
@@ -1,5 +1,10 @@
 <?php
 
+function to_slug($str)
+{
+       return str_replace(['-', ' '], '_', strtolower($str));
+}
+
 /** Splits up a string by a space
  * (chr 32)
  *
index 16f33d6791a1bbef0e09ab9ed82beb20f3514bcb..b2e6f22ac4abc49b701bba0a33fc628346dc7f6a 100644 (file)
@@ -60,7 +60,6 @@ if (isset($_POST))
                }
        }
 }
-
 $userlist = [];
 Hook::run(HOOKTYPE_GET_USER_LIST, $userlist);
 
diff --git a/settings/user-role-edit.php b/settings/user-role-edit.php
new file mode 100644 (file)
index 0000000..0f39a25
--- /dev/null
@@ -0,0 +1,56 @@
+<?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