]> source.dussan.org Git - nextcloud-server.git/commitdiff
Some work on the fancy user management
authorJakob Sack <kde@jakobsack.de>
Sat, 16 Apr 2011 23:04:23 +0000 (01:04 +0200)
committerJakob Sack <kde@jakobsack.de>
Sat, 16 Apr 2011 23:04:23 +0000 (01:04 +0200)
14 files changed:
admin/ajax/creategroup.php
admin/ajax/createuser.php
admin/ajax/removegroup.php [new file with mode: 0644]
admin/ajax/removeuser.php [new file with mode: 0644]
admin/js/users.js
admin/templates/users.php
lib/Group/backend.php
lib/Group/database.php
lib/User/backend.php
lib/User/database.php
lib/app.php
lib/filestorage.php
lib/group.php
lib/user.php

index ab99d2a5bee0ec14b6f9fccaaffc2044935d77b8..bfa4099b8899436b39db16a5900f8d0eba413d8e 100644 (file)
@@ -12,23 +12,14 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin'
        exit();
 }
 
-$groups = array();
-if( isset( $_POST["groups"] )){
-       $groups = $_POST["groups"];
-}
-$username = $_POST["username"];
-$password = $_POST["password"];
-
-foreach( $groups as $i ){
-       OC_GROUP::addToGroup( $username, $i );
-}
+$name = $_POST["groupname"];
 
 // Return Success story
-if( OC_USER::createUser( $username, $password )){
-       echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", $groups ))));
+if( OC_GROUP::createGroup( $name )){
+       echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name )));
 }
 else{
-       echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add user" )));
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add group" )));
 }
 
 ?>
index ab99d2a5bee0ec14b6f9fccaaffc2044935d77b8..4aa082a25e683725f563cf4ace597792c6163982 100644 (file)
@@ -19,12 +19,11 @@ if( isset( $_POST["groups"] )){
 $username = $_POST["username"];
 $password = $_POST["password"];
 
-foreach( $groups as $i ){
-       OC_GROUP::addToGroup( $username, $i );
-}
-
 // 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 ))));
 }
 else{
diff --git a/admin/ajax/removegroup.php b/admin/ajax/removegroup.php
new file mode 100644 (file)
index 0000000..c7991ba
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+// We send json data
+header( "Content-Type: application/jsonrequest" );
+
+// Check if we are a user
+if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
+       exit();
+}
+
+$name = $_POST["groupname"];
+
+// Return Success story
+if( OC_GROUP::deleteGroup( $name )){
+       echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name )));
+}
+else{
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete group" )));
+}
+
+?>
diff --git a/admin/ajax/removeuser.php b/admin/ajax/removeuser.php
new file mode 100644 (file)
index 0000000..12a27ff
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+// We send json data
+header( "Content-Type: application/jsonrequest" );
+
+// Check if we are a user
+if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
+       exit();
+}
+
+$name = $_POST["username"];
+
+// Return Success story
+if( OC_USER::deleteUser( $name )){
+       echo json_encode( array( "status" => "success", "data" => array( "username" => $name )));
+}
+else{
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete user" )));
+}
+
+?>
index 0713cf8e5dcb8bc12ef149fdd980a347753734b9..7cd1ed6f6243c230b8677e8013e0e0e72b0c9a94 100644 (file)
@@ -12,10 +12,15 @@ $(document).ready(function(){
                        "Create an account": function() {
                                var post = $( "#createuserdata" ).serialize();
                                $.post( 'ajax/createuser.php', post, function(data){
-                                       var newrow = '<tr><td>' + data.data.username + '</td>';
-                                       newrow = newrow + '<td>' + data.data.groups + '</td>';
-                                       newrow = newrow + '<td><a href="" class="edituser-button">edit</a> | <a  class="removeuser-button" href="">remove</a></td></tr>';
-                                       $("#userstable").append( newrow  );
+                                       if( data.status == "success" ){
+                                               var newrow = '<tr><td>' + data.data.username + '</td>';
+                                               newrow = newrow + '<td>' + data.data.groups + '</td>';
+                                               newrow = newrow + '<td><a href="" class="edituser-button">edit</a> | <a  class="removeuser-button" href="">remove</a></td></tr>';
+                                               $("#userstable").append( newrow  );
+                                       }
+                                       else{
+                                               alert( "Bug By Jakob (c)" );
+                                       }
                                });
                                $( this ).dialog( "close" );
                        },
@@ -61,7 +66,7 @@ $(document).ready(function(){
                        return false;
                });
 
-       // Dialog for adding users
+       // Removing users
        $( "#removeuser-form" ).dialog({
                autoOpen: false,
                height: 300,
@@ -69,6 +74,15 @@ $(document).ready(function(){
                modal: true,
                buttons: {
                        "Remove user": function() {
+                               var post = $( "#removeuserdata" ).serialize();
+                               $.post( 'ajax/removeuser.php', post, function(data){
+                                       if( data.status == "success" ){
+                                               $( "a[x-uid='"+uid+"']" ).parent().remove();
+                                       }
+                                       else{
+                                               alert( "Bug By Jakob (c)" );
+                                       }
+                               });
                                $( this ).dialog( "close" );
                        },
                        Cancel: function() {
@@ -76,7 +90,7 @@ $(document).ready(function(){
                        }
                },
                close: function() {
-                       allFields.val( "" ).removeClass( "ui-state-error" );
+                       true;
                }
        });
 
@@ -84,10 +98,28 @@ $(document).ready(function(){
                .click(function() {
                        uid = $( this ).parent().attr( 'x-uid' );
                        $("#deleteuserusername").html(uid);
+                       $("#deleteusernamefield").val(uid);
                        $( "#removeuser-form" ).dialog( "open" );
                        return false;
                });
 
+       // Add a group
+       $( "#creategroupbutton" )
+               .click(function(){
+                       var post = $( "#creategroupdata" ).serialize();
+                       $.post( 'ajax/creategroup.php', post, function(data){
+                               if( data.status == "success" ){
+                                       var newrow = '<tr><td>' + data.data.groupname + '</td>';
+                                       newrow = newrow + '<td><a class="removegroup-button" href="">remove</a></td></tr>';
+                                       $("#groupstable").append( newrow  );
+                               }
+                               else{
+                                       alert( "something went wrong! sorry!" );
+                               }
+                       });
+                       return false;
+               });
+
        // Dialog for adding users
        $( "#removegroup-form" ).dialog({
                autoOpen: false,
@@ -96,9 +128,14 @@ $(document).ready(function(){
                modal: true,
                buttons: {
                        "Remove group": function(){
-                               var post = $( "#deletegroupdata" ).serialize();
-                               $.post( 'ajax/deletegroup.php', post, function(data){
-                                       $( "a[x-gid='"+gid+"']" ).parent().remove();
+                               var post = $( "#removegroupdata" ).serialize();
+                               $.post( 'ajax/removegroup.php', post, function(data){
+                                       if( data.status == "success" ){
+                                               $( "a[x-gid='"+gid+"']" ).parent().remove();
+                                       }
+                                       else{
+                                               alert( "Bug By Jakob (c)" );
+                                       }
                                });
                                $( this ).dialog( "close" );
                        },
@@ -107,7 +144,7 @@ $(document).ready(function(){
                        }
                },
                close: function(){
-                       allFields.val( "" ).removeClass( "ui-state-error" );
+                       true;
                }
        });
 
index ce78ffac775d174a710215cf262c72babf73f135..b2172b053999f9a691a90001d08275c4e08d805e 100644 (file)
@@ -28,7 +28,7 @@
 <a id="adduser-button" href="">New user</a>
 
 <h2>Groups</h2>
-<form>
+<form id="creategroupdata">
        <table id="groupstable">
                <thead>
                        <tr>
                                <th></th>
                        </tr>
                </thead>
+               <tfoot>
+                       <tr>
+                               <td><input type="text" name="groupname" id="creategroupname" /></td>
+                               <td><button id="creategroupbutton">Create group</button></td>
+                       </tr>
+               </tfoot>
                <tbody>
                        <?php foreach($_["groups"] as $group): ?>
                                <tr>
                                        <td x-gid="<?php echo $group["name"]; ?>"><a class="removegroup-button" href="">remove</a></td>
                                </tr>
                        <?php endforeach; ?>
-                       <tr>
-                               <td><input type="text" name="name" /></td>
-                               <td><input type="submit" /></td>
-                       </tr>
                </tbody>
        </table>
 </form>
 
-<a id="addgroup-button" href="">Add group</a>
-
-
 <div id="adduser-form" title="Add user">
        <form id="createuserdata">
                <fieldset>
 <div id="removeuser-form" title="Remove user">
        <form id="removeuserdata">
                Do you really want to delete user <span id="deleteuserusername">$user</span>?
-               <input type="hidden" name="username" value="">
+               <input id="deleteusernamefield" type="hidden" name="username" value="">
        </form>
 </div>
 
 <div id="removegroup-form" title="Remove Group">
-       <form id="removeuserdata">
+       <form id="removegroupdata">
                Do you really want to delete group <span id="deletegroupgroupname">$group</span>?
-               <input id="deletegroupnamefield" type="hidden" name="username" value="">
+               <input id="deletegroupnamefield" type="hidden" name="groupname" value="">
        </form>
 </div>
index f34c340be8cfbf4ab6cb07ad787204d2f13b9802..c3f208157e4cf5dc42451471d03f71811a0af1ae 100644 (file)
@@ -35,6 +35,13 @@ abstract class OC_GROUP_BACKEND {
         */
        public static function createGroup($groupName){}
 
+       /**
+        * Try to delete Group
+        *
+        * @param  string  $groupName  The name of the group to delete
+        */
+       public static function deleteGroup($groupName){}
+
        /**
         * Check if a user belongs to a group
         *
index e3e6c825b9f33ab03446d2a2fa6cd03eac0c9421..aea27a3d6d8b7e40567a65ff3a8c6ea05a8e3728 100644 (file)
@@ -66,6 +66,18 @@ class OC_GROUP_DATABASE extends OC_GROUP_BACKEND {
                }
        }
 
+       /**
+        * Try to delete a group
+        *
+        * @param  string  $groupName  The name of the group to delete
+        */
+       public static function deleteGroup( $gid ){
+               $query = OC_DB::prepare( "DELETE FROM `*PREFIX*groups` WHERE `gid` = ?" );
+               $result = $query->execute( array( $gid ));
+
+               return true;
+       }
+
        /**
         * Check if a user belongs to a group
         *
index 0483d72bf02f1f98cdc91323f7d1659113ebd5a5..29a1932e193ffe5ac0e8ca47ff327c6382d97e3f 100644 (file)
@@ -37,6 +37,12 @@ abstract class OC_USER_BACKEND {
         */
        public static function createUser($username, $password){}
 
+       /**
+        * @brief Delete a new user
+        * @param $username The username of the user to delete
+        */
+       public static function deleteUser( $username ){}
+
        /**
         * Try to login a user
         *
index f0b68cf17d7d2af5d35b0ea77ade2a83e8c3654a..5b68d3ff7c2d23e1da9fb995629a4bdde9f2975d 100644 (file)
@@ -64,6 +64,18 @@ class OC_USER_DATABASE extends OC_USER_BACKEND {
                }
        }
 
+       /**
+        * Try to delete a user
+        *
+        * @param  string  $username  The username of the user to delete
+        */
+       public static function deleteUser( $uid ){
+               $query = OC_DB::prepare( "DELETE FROM `*PREFIX*users` WHERE `uid` = ?" );
+               $result = $query->execute( array( $uid ));
+
+               return true;
+       }
+
        /**
         * Try to login a user
         *
index c9e4d534357e881e364708b5ed1dc87629839ecb..19e6df77f84d9ab581de7da7b426b497209cdc42 100644 (file)
@@ -318,7 +318,6 @@ class OC_APP{
         *   -# unzipping it
         *   -# including appinfo/installer.php
         *   -# executing "oc_app_install()"
-        *   -# renaming appinfo/app.sample.php to appinfo/app.php
         *
         * It is the task of oc_app_install to create the tables and do whatever is
         * needed to get the app working.
@@ -346,8 +345,6 @@ class OC_APP{
         *   - pretend: boolean, if set true the system won't do anything
         *   - noupgrade: boolean, if true the function oc_app_upgrade will be
         *     skipped
-        *   - keepappinfo: boolean. If set true, the folder appinfo will not be
-        *     deleted, appinfo/app.php will not be replaced by a new version
         *
         * This function works as follows
         *   -# fetching the file
@@ -355,7 +352,6 @@ class OC_APP{
         *   -# unzipping new file
         *   -# including appinfo/installer.php
         *   -# executing "oc_app_upgrade( $options )"
-        *   -# renaming appinfo/app.sample.php to appinfo/app.php
         */
        public static function upgradeApp( $data = array()){
                // TODO: write function
index e7fb9e9d2705676262409874fc87a9d39a42e792..799d07da9db5360a8e9b8f6b5de470036c24e9e7 100644 (file)
@@ -378,6 +378,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
        }
 
        public function fromTmpFile($tmpFile,$path){
+die( "oh nooo!" );
                $fileStats = stat($tmpFile);
                if(rename($tmpFile,$this->datadir.$path)){
                        touch($this->datadir.$path, $fileStats['mtime'], $fileStats['atime']);
@@ -447,7 +448,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
                }
                return $return;
        }
-       
+
        /**
         * @brief get the size of folder and it's content
         * @param string $path file path
@@ -462,7 +463,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
                        return $this->calculateFolderSize($path);
                }
        }
-       
+
        /**
         * @brief calulate the size of folder and it's content and cache it
         * @param string $path file path
@@ -493,7 +494,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
                }
                return $size;
        }
-       
+
        /**
         * @brief clear the folder size cache of folders containing a file
         * @param string $path
index 18e34c727739cd8590cc2d7283231f63875e24da..d8a59a139a5cb99081fee59616cb7c134d1824f0 100644 (file)
@@ -78,6 +78,24 @@ class OC_GROUP {
                }
        }
 
+       /**
+        * Try to create a new group
+        *
+        * @param  string  $groupName  The name of the group to create
+        */
+       public static function createGroup($gid) {
+               return self::$_backend->createGroup($gid);
+       }
+
+       /**
+        * Try to delete Group
+        *
+        * @param  string  $groupName  The name of the group to delete
+        */
+       public static function deleteGroup($gid) {
+               return self::$_backend->deleteGroup($gid);
+       }
+
        /**
         * Check if a user belongs to a group
         *
index d70443b7e61751708353f82a27c6385427d0d355..6cfcc6be488dd5b949495b2175713b340103a299 100644 (file)
@@ -95,6 +95,14 @@ class OC_USER {
                return self::$_backend->createUser( $username, $password );
        }
 
+       /**
+        * @brief Delete a new user
+        * @param $username The username of the user to delete
+        */
+       public static function deleteUser( $username ){
+               return self::$_backend->deleteUser( $username );
+       }
+
        /**
         * @brief try to login a user
         * @param $username The username of the user to log in