]> source.dussan.org Git - nextcloud-server.git/commitdiff
More error checking in user management
authorJakob Sack <kde@jakobsack.de>
Mon, 18 Apr 2011 10:39:28 +0000 (12:39 +0200)
committerJakob Sack <kde@jakobsack.de>
Mon, 18 Apr 2011 10:39:28 +0000 (12:39 +0200)
admin/ajax/creategroup.php
admin/ajax/createuser.php
admin/ajax/togglegroups.php
admin/js/users.js
admin/templates/users.php
lib/group.php
lib/user.php

index bfa4099b8899436b39db16a5900f8d0eba413d8e..eec27587930dcc0ae27a683c252d247a9c3df4ab 100644 (file)
@@ -12,11 +12,17 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin'
        exit();
 }
 
-$name = $_POST["groupname"];
+$groupname = $_POST["groupname"];
+
+// Does the group exist?
+if( in_array( $groupname, OC_GROUP::getGroups())){
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Group already exists" )));
+       exit();
+}
 
 // Return Success story
-if( OC_GROUP::createGroup( $name )){
-       echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name )));
+if( OC_GROUP::createGroup( $groupname )){
+       echo json_encode( array( "status" => "success", "data" => array( "groupname" => $groupname )));
 }
 else{
        echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add group" )));
index 4aa082a25e683725f563cf4ace597792c6163982..a6e4ec0e93d85ad1f1aabe5f56b616052a8a96a7 100644 (file)
@@ -19,12 +19,18 @@ if( isset( $_POST["groups"] )){
 $username = $_POST["username"];
 $password = $_POST["password"];
 
+// Does the group exist?
+if( in_array( $username, OC_USER::getUsers())){
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "User already exists" )));
+       exit();
+}
+
 // Return Success story
 if( OC_USER::createUser( $username, $password )){
        foreach( $groups as $i ){
                OC_GROUP::addToGroup( $username, $i );
        }
-       echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", $groups ))));
+       echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", OC_GROUP::getUserGroups( $username )))));
 }
 else{
        echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add user" )));
index cd26dbc144058863afc560a73a614767a2ba9c09..86834f56ea3adea6fa04af06c66eac90d03693d1 100644 (file)
@@ -13,24 +13,28 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin'
 }
 
 $success = true;
+$error = "add user to";
+$action = "add";
 
 $username = $_POST["username"];
 $group = $_POST["group"];
 
 // Toggle group
 if( OC_GROUP::inGroup( $username, $group )){
-       OC_GROUP::removeFromGroup( $username, $group );
+       $action = "remove";
+       $error = "remove user from";
+       $success = OC_GROUP::removeFromGroup( $username, $group );
 }
 else{
-       OC_GROUP::addToGroup( $username, $group );
+       $success = OC_GROUP::addToGroup( $username, $group );
 }
 
 // Return Success story
 if( $success ){
-       echo json_encode( array( "status" => "success", "data" => array( "username" => $username )));
+       echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "action" => $action, "groupname" => $groupname )));
 }
 else{
-       echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete user" )));
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to $error group $group" )));
 }
 
 ?>
index 6a9ae9fc114946ebf5c15f57960f81269bf3ddc8..a649d641c8035b69337df3bcb7749f3f6112bb18 100644 (file)
@@ -31,12 +31,18 @@ $(document).ready(function(){
                                }
                        }
                        else{
-                               alert( "something went wrong! sorry!" );
+                               printError( data.data.message );
                        }
                });
                return false;
        }
 
+       function printError( message ){
+               $("#errormessage").text( message );
+               $("#errordialog").dialog( "open" );
+               return false;
+       }
+
        //#########################################################################
        // Functions for editing the dom after user manipulation
        //#########################################################################
@@ -131,7 +137,7 @@ $(document).ready(function(){
                                $('#changepassword').hide();
                        }
                        else{
-                               alert( "something went wrong! sorry!" );
+                               printError( data.data.message );
                        }
                });
                return false;
@@ -202,7 +208,8 @@ $(document).ready(function(){
        // Show the create user form
        $( "#createuseroptionbutton" )
                .click(function(){
-                       $( "#createuserform" ).toggle();
+                       $("#createuserform").show();
+                       $("#createuseroption").hide();
                        return false;
                });
 
@@ -219,7 +226,7 @@ $(document).ready(function(){
                                        userCreated( data.data.username, data.data.groups );
                                }
                                else{
-                                       alert( "Bug By Jakob (c)" );
+                                       printError( data.data.message );
                                }
                        });
                        return false;
@@ -243,7 +250,7 @@ $(document).ready(function(){
                                        groupCreated( data.data.groupname );
                                }
                                else{
-                                       alert( "something went wrong! sorry!" );
+                                       printError( data.data.message );
                                }
                        });
                        return false;
@@ -261,6 +268,17 @@ $(document).ready(function(){
        // Dialogs
        //#########################################################################
 
+       // Removing users
+       $( "#errordialog" ).dialog({
+               autoOpen: false,
+               modal: true,
+               buttons: {
+                       OK: function() {
+                               $( this ).dialog( "close" );
+                       }
+               }
+       });
+
        // Removing users
        $( "#removeuserform" ).dialog({
                autoOpen: false,
@@ -275,7 +293,7 @@ $(document).ready(function(){
                                                userRemoved( uid );
                                        }
                                        else{
-                                               alert( "Bug By Jakob (c)" );
+                                               printError( data.data.message );
                                        }
                                });
                                $( this ).dialog( "close" );
@@ -304,7 +322,7 @@ $(document).ready(function(){
                                                groupRemoved( gid );
                                        }
                                        else{
-                                               alert( "Bug By Jakob (c)" );
+                                               printError( data.data.message );
                                        }
                                });
                                $( this ).dialog( "close" );
index e769dcd4fc5ab03d23c06b4e409f387100950ebe..235df5bf829c681d29079d4d0358550799606da6 100644 (file)
                <?php foreach($_["groups"] as $group): ?>
                        <tr x-gid="<?php echo $group["name"]; ?>">
                                <td><?php echo $group["name"] ?></td>
-                               <td><a class="removegroupbutton" href="">remove</a></td>
+                               <td>
+                                       <?php if( $group["name"] != "admin" ): ?>
+                                               <a class="removegroupbutton" href="">remove</a>
+                                       <?php else: ?>
+                                               &nbsp;
+                                       <?php endif; ?>
+                               </td>
                        </tr>
                <?php endforeach; ?>
        </tbody>
                <input id="removegroupnamefield" type="hidden" name="groupname" value="">
        </form>
 </div>
+
+<div id="errordialog" title="Error">
+       <span id="errormessage"></span>
+</div>
index 074e464f5813d76a40f2c9d2f346afa8c150aa3f..6510838ccfc47971bedd1c7016a423a5f0597f15 100644 (file)
@@ -108,6 +108,10 @@ class OC_GROUP {
                if( !$gid ){
                        return false;
                }
+               // No duplicate group names
+               if( in_array( $gid, self::getGroups())){
+                       return false;
+               }
 
                $run = true;
                OC_HOOK::emit( "OC_GROUP", "pre_createGroup", array( "run" => &$run, "gid" => $gid ));
@@ -167,6 +171,16 @@ class OC_GROUP {
         * Adds a user to a group.
         */
        public static function addToGroup( $uid, $gid ){
+               // Does the user exist?
+               if( !in_array( $uid, OC_USER::getUsers())){
+                       return false;
+               }
+               // Does the group exist?
+               if( !in_array( $gid, self::getGroups())){
+                       return false;
+               }
+
+               // Go go go
                $run = true;
                OC_HOOK::emit( "OC_GROUP", "pre_addToGroup", array( "run" => &$run, "uid" => $uid, "gid" => $gid ));
 
index 51e4ab358e139ab4b31a8e4a591299ae53c8ad54..09501e59c5887afd179f8fc58d141056388d421d 100644 (file)
@@ -118,6 +118,11 @@ class OC_USER {
                if( !$uid ){
                        return false;
                }
+               // Check if user already exists
+               if( in_array( $uid, self::getUsers())){
+                       return false;
+               }
+
 
                $run = true;
                OC_HOOK::emit( "OC_USER", "pre_createUser", array( "run" => &$run, "uid" => $uid, "password" => $password ));