]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/commitdiff
Role Editor: can now add/duplicate and delete roles.
authorValerie Pond <redacted>
Sat, 22 Apr 2023 23:24:15 +0000 (00:24 +0100)
committerValerie Pond <redacted>
Sat, 22 Apr 2023 23:24:15 +0000 (00:24 +0100)
Classes/class-paneluser.php
inc/common.php
settings/user-role-edit.php

index 41d0989ed76db80917fa30c5700a06ed08de8930..217226f11fa46420854b4545987479bdfa40e857 100644 (file)
@@ -377,13 +377,21 @@ function generate_role_list($list)
                <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 ?>
-                               <i style="padding-top:-30px;padding-bottom: -30px;"class="fa fa-trash fa-1" aria-hidden="true"></i>
+                               
                        </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
+                               <form method="post">
+                               <?php if ($role !== "Super Admin" && $role !== "Read Only") { ?>
+                                       <div class="container row mb-2">
+                                               <button id="update_role" name="update_role" value="<?php echo $role ?>" class="btn btn-primary ml-1 mr-2" >Update</button>
+                                               <button id="delete_role" name="del_role_name" value="<?php echo $role ?>" class="btn btn-danger"><i class="fa fa-trash fa-1" aria-hidden="true"></i></button>
+                                       </div>
+                                       
+                               <?php } ?>
+                               <div id="<?php echo $role; ?>_input_area"><?php
                                        foreach($list2 as $desc => $slug)
                                        {
                                        $attributes = "";
@@ -396,7 +404,7 @@ function generate_role_list($list)
                                                                        <input <?php
                                                                                $attributes .= (in_array($slug, $list[$role])) ? "checked" : "";
                                                                                echo $attributes;
-                                                                       ?> name="<?php echo to_slug($role); ?>_permissions[]" value="<?php echo $slug; ?>" type="checkbox">
+                                                                       ?> name="permissions[]" value="<?php echo $slug; ?>" type="checkbox">
                                                                </div>
                                                        </div>
                                                        <input type="text" readonly class="form-control" value="<?php echo "$desc ($slug)"; ?>">
@@ -404,14 +412,15 @@ function generate_role_list($list)
                                
                                                <?php
                                        }
-                               ?>
+                               ?>      </div>
+                               </form>
                        </div>
                </div>
        </div>
 <?php }?>
 
                </div></div><br>
-                       <button type="submit" class="btn btn-primary">Save changes</div>
+                       
 </div><?php
 
 }
index f2364b5b467642b9c86c93910c6f0c0cf591bbe7..c5890d045e39be553bb4494139bf44f9755c2689 100644 (file)
@@ -369,7 +369,8 @@ if (!panel_start_session())
        }
 } else {
        $pages["Settings"]["Accounts"] = "settings";
-
+       if (current_user_can(PERMISSION_MANAGE_USERS))
+               $pages["Settings"]["Role Editor"] = "settings/user-role-edit.php";
        $user = unreal_get_current_user();
        if ($user)
        {
index e32281b300d932e91ae7277febf83ff0e533bb32..e85b11cb2e5d684428ef02545ac014aeafb40d4e 100644 (file)
@@ -2,7 +2,7 @@
 
 require_once "../inc/common.php";
 require_once "../inc/header.php";
-
+do_log($_POST);
 if (!current_user_can(PERMISSION_MANAGE_USERS))
 {
     echo "<h4>Access denied</h4>";
@@ -38,19 +38,19 @@ if (isset($_POST['add_role_name']) && $role_name = $_POST['add_role_name'])
             $permissions = $list[$dup];
             $msg .= ", a duplicate of \"$dup\"";
         }
-        $settings = DbSettings::get();
         $clean_perms = [];
             foreach($permissions as $k => $v)
                 $clean_perms[] = $v;
 
-        $settings['user_roles'][$role_name] = $clean_perms;
-        DbSettings::set('user_roles', $settings['user_roles']);
+        $config['user_roles'][$role_name] = $clean_perms;
+        write_config('user_roles');
         $success[] = $msg;
         $list = get_panel_user_roles_list(); // refresh
         
     }
 }
 
+
 elseif (isset($_POST['del_role_name']) && $role_name = $_POST['del_role_name'])
 {
     $found = 0;
@@ -64,9 +64,8 @@ elseif (isset($_POST['del_role_name']) && $role_name = $_POST['del_role_name'])
     }
     if ($found) // so far so good
     {
-        $settings = DbSettings::get();
-        unset($settings['user_roles'][$role_name]);
-        DbSettings::set('user_roles', $settings['user_roles']);
+        unset($config['user_roles'][$role_name]);
+        write_config('user_roles');
         $success[] = "Successfully deleted role \"$role_name\"";
         $list = get_panel_user_roles_list(); // refresh
     }
@@ -154,7 +153,7 @@ elseif (isset($_POST['del_role_name']) && $role_name = $_POST['del_role_name'])
     });
 
     add_role_name.addEventListener('input', e => {
-        if (!add_role_name.value.length)
+        if (!add_role_name.value.trim().length) // disallow names consisting of just spaces... it doesn't break anything, but it's stupid
             role_submit.disabled = true;
         else
             role_submit.disabled = false;