diff options
author | Jakob Sack <kde@jakobsack.de> | 2011-04-17 01:04:23 +0200 |
---|---|---|
committer | Jakob Sack <kde@jakobsack.de> | 2011-04-17 01:04:23 +0200 |
commit | c4287162c4fb16e5b85a103aabbbbe7a7eebe4c7 (patch) | |
tree | 40ce06b0efc339956b7f5c117e87827cd094ce10 | |
parent | b129079bed8ebd1b5051dabe15eccdc17bf4b403 (diff) | |
download | nextcloud-server-c4287162c4fb16e5b85a103aabbbbe7a7eebe4c7.tar.gz nextcloud-server-c4287162c4fb16e5b85a103aabbbbe7a7eebe4c7.zip |
Some work on the fancy user management
-rw-r--r-- | admin/ajax/creategroup.php | 17 | ||||
-rw-r--r-- | admin/ajax/createuser.php | 7 | ||||
-rw-r--r-- | admin/ajax/removegroup.php | 25 | ||||
-rw-r--r-- | admin/ajax/removeuser.php | 25 | ||||
-rw-r--r-- | admin/js/users.js | 57 | ||||
-rw-r--r-- | admin/templates/users.php | 21 | ||||
-rw-r--r-- | lib/Group/backend.php | 7 | ||||
-rw-r--r-- | lib/Group/database.php | 12 | ||||
-rw-r--r-- | lib/User/backend.php | 6 | ||||
-rw-r--r-- | lib/User/database.php | 12 | ||||
-rw-r--r-- | lib/app.php | 4 | ||||
-rw-r--r-- | lib/filestorage.php | 7 | ||||
-rw-r--r-- | lib/group.php | 18 | ||||
-rw-r--r-- | lib/user.php | 8 |
14 files changed, 181 insertions, 45 deletions
diff --git a/admin/ajax/creategroup.php b/admin/ajax/creategroup.php index ab99d2a5bee..bfa4099b889 100644 --- a/admin/ajax/creategroup.php +++ b/admin/ajax/creategroup.php @@ -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" ))); } ?> diff --git a/admin/ajax/createuser.php b/admin/ajax/createuser.php index ab99d2a5bee..4aa082a25e6 100644 --- a/admin/ajax/createuser.php +++ b/admin/ajax/createuser.php @@ -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 index 00000000000..c7991ba5819 --- /dev/null +++ b/admin/ajax/removegroup.php @@ -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 index 00000000000..12a27fff58d --- /dev/null +++ b/admin/ajax/removeuser.php @@ -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" ))); +} + +?> diff --git a/admin/js/users.js b/admin/js/users.js index 0713cf8e5dc..7cd1ed6f624 100644 --- a/admin/js/users.js +++ b/admin/js/users.js @@ -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; } }); diff --git a/admin/templates/users.php b/admin/templates/users.php index ce78ffac775..b2172b05399 100644 --- a/admin/templates/users.php +++ b/admin/templates/users.php @@ -28,7 +28,7 @@ <a id="adduser-button" href="">New user</a> <h2>Groups</h2> -<form> +<form id="creategroupdata"> <table id="groupstable"> <thead> <tr> @@ -36,6 +36,12 @@ <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> @@ -43,17 +49,10 @@ <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> @@ -82,13 +81,13 @@ <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> diff --git a/lib/Group/backend.php b/lib/Group/backend.php index f34c340be8c..c3f208157e4 100644 --- a/lib/Group/backend.php +++ b/lib/Group/backend.php @@ -36,6 +36,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 * * @param string $username Name of the user to check diff --git a/lib/Group/database.php b/lib/Group/database.php index e3e6c825b9f..aea27a3d6d8 100644 --- a/lib/Group/database.php +++ b/lib/Group/database.php @@ -67,6 +67,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 * * @param string $username Name of the user to check diff --git a/lib/User/backend.php b/lib/User/backend.php index 0483d72bf02..29a1932e193 100644 --- a/lib/User/backend.php +++ b/lib/User/backend.php @@ -38,6 +38,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 * * @param string $username The username of the user to log in diff --git a/lib/User/database.php b/lib/User/database.php index f0b68cf17d7..5b68d3ff7c2 100644 --- a/lib/User/database.php +++ b/lib/User/database.php @@ -65,6 +65,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 * * @param string $username The username of the user to log in diff --git a/lib/app.php b/lib/app.php index c9e4d534357..19e6df77f84 100644 --- a/lib/app.php +++ b/lib/app.php @@ -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 diff --git a/lib/filestorage.php b/lib/filestorage.php index e7fb9e9d270..799d07da9db 100644 --- a/lib/filestorage.php +++ b/lib/filestorage.php @@ -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 diff --git a/lib/group.php b/lib/group.php index 18e34c72773..d8a59a139a5 100644 --- a/lib/group.php +++ b/lib/group.php @@ -79,6 +79,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 * * @param string $username Name of the user to check diff --git a/lib/user.php b/lib/user.php index d70443b7e61..6cfcc6be488 100644 --- a/lib/user.php +++ b/lib/user.php @@ -96,6 +96,14 @@ class OC_USER { } /** + * @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 * @param $password The password of the user |