From: Jakob Sack Date: Sun, 17 Apr 2011 16:05:49 +0000 (+0200) Subject: User management works good enough for now. Need to do something else ... X-Git-Tag: v3.0~267^2~558^2~86 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=79d8aa871a56c18f3857fba86dc5dec14ece51d3;p=nextcloud-server.git User management works good enough for now. Need to do something else ... --- diff --git a/admin/ajax/changepassword.php b/admin/ajax/changepassword.php index 12a27fff58d..a8f3af15175 100644 --- a/admin/ajax/changepassword.php +++ b/admin/ajax/changepassword.php @@ -12,14 +12,15 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' exit(); } -$name = $_POST["username"]; +$username = $_POST["username"]; +$password = $_POST["password"]; // Return Success story -if( OC_USER::deleteUser( $name )){ - echo json_encode( array( "status" => "success", "data" => array( "username" => $name ))); +if( OC_USER::setPassword( $username, $password )){ + echo json_encode( array( "status" => "success", "data" => array( "username" => $username ))); } 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 change password" ))); } ?> diff --git a/admin/ajax/removeuser.php b/admin/ajax/removeuser.php index 9cf52c128b0..7e587f16058 100644 --- a/admin/ajax/removeuser.php +++ b/admin/ajax/removeuser.php @@ -12,30 +12,14 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' exit(); } -$groups = array(); $username = $_POST["username"]; -$password = $_POST["password"]; -$groups = $_POST["groups"]; - -$success = true; -if( $password ){ - $success = $success && OC_USER::setPassword( $username, $password ); -} - -// update groups (delete old ones, add new ones) -foreach( OC_GROUP::getUserGroups( $username ) as $i ){ - OC_GROUP::removeFromGroup( $username, $i ); -} -foreach( $groups as $i ){ - OC_GROUP::addToGroup( $username, $i ); -} // Return Success story -if( $success ){ - echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", $groups )))); +if( OC_USER::deleteUser( $username )){ + echo json_encode( array( "status" => "success", "data" => array( "username" => $username ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Edit user" ))); + echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete user" ))); } ?> diff --git a/admin/ajax/togglegroups.php b/admin/ajax/togglegroups.php index 12a27fff58d..cd26dbc1440 100644 --- a/admin/ajax/togglegroups.php +++ b/admin/ajax/togglegroups.php @@ -12,11 +12,22 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' exit(); } -$name = $_POST["username"]; +$success = true; + +$username = $_POST["username"]; +$group = $_POST["group"]; + +// Toggle group +if( OC_GROUP::inGroup( $username, $group )){ + OC_GROUP::removeFromGroup( $username, $group ); +} +else{ + OC_GROUP::addToGroup( $username, $group ); +} // Return Success story -if( OC_USER::deleteUser( $name )){ - echo json_encode( array( "status" => "success", "data" => array( "username" => $name ))); +if( $success ){ + echo json_encode( array( "status" => "success", "data" => array( "username" => $username ))); } 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 e543e52f1bd..ad1555c95a1 100644 --- a/admin/js/users.js +++ b/admin/js/users.js @@ -2,6 +2,35 @@ $(document).ready(function(){ // Vars we need var uid = ""; var gid = ""; + var togglepassword = ""; + var togglegroup = ""; + + //######################################################################### + // Stuff I don't understand + //######################################################################### + + function doToggleGroup( group ){ + $("#changegroupgid").val(group); + + // Serialize the data + var post = $( "#changegroupsform" ).serialize(); + // Ajax foo + $.post( 'ajax/togglegroups.php', post, function(data){ + if( data.status == "success" ){ + var groups = []; + $("input[x-use='togglegroup']").each( function(index){ + if( $(this).attr("checked")){ + groups.push($(this).val()); + } + }); + $("#changegroups").prev().html( groups.join(", ")); + } + else{ + alert( "something went wrong! sorry!" ); + } + }); + return false; + } //######################################################################### // Functions for editing the dom after user manipulation @@ -10,9 +39,9 @@ $(document).ready(function(){ // Manipulating the page after crteating a user function userCreated( username, groups ){ // Add user to table - var newrow = ''+username+''; - newrow = newrow+''+groups+''; - newrow = newrow+'edit | remove'; + var newrow = ''+username+''; + newrow = newrow+''+groups+''; + newrow = newrow+'edit | remove'; $("#usertable").append( newrow ); // Clear forms @@ -20,21 +49,12 @@ $(document).ready(function(){ $("input[x-use='createusercheckbox']").attr( "checked", false ); } - // Manipulating the page after crteating a user - function userEdited( username, groups ){ - // Edit table - var newrow = ''+username+''; - newrow = newrow+''+groups+''; - newrow = newrow+'edit | remove'; - $("td[x-uid='"+username+"']").replace( newrow ); - } - function userRemoved( username ){ - $( "td[x-uid='"+username+"']" ).parent().remove(); + $( "tr[x-uid='"+username+"']" ).remove(); } function groupCreated( groupname ){ - var newrow = '' + groupname + ''; + var newrow = '' + groupname + ''; newrow = newrow + 'remove'; $("#grouptable").append( newrow ); @@ -42,14 +62,15 @@ $(document).ready(function(){ $("input[x-use='creategroupfield']").val( "" ); // Add group option to Create User and Edit User - createuser = ''+groupname+'
'; + var createuser = ''+groupname+'
'; $("#createusergroups").append( createuser ); - $("#editusergroups").append( createuser ); + var changeuser = ''+groupname+'
'; + $("#changegroupsform").append( changeuser ); } function groupRemoved( groupname ){ // Delete the options - $( "td[x-gid='"+groupname+"']" ).parent().remove(); + $( "tr[x-gid='"+groupname+"']" ).remove(); $( "span[x-gid='"+groupname+"']" ).remove(); $( "input[x-gid='"+groupname+"']" ).remove(); @@ -70,6 +91,95 @@ $(document).ready(function(){ } + //######################################################################### + // Editing the users properties by clicking the cell + //######################################################################### + + // Password (clicking on user name) + $("span[x-use='usernamespan']").live( "click", function(){ + if( togglepassword == "" || $(this).parent().parent().attr("x-uid") != togglepassword ){ + togglepassword = $(this).parent().parent().attr("x-uid"); + // Set the username! + $("#changepassworduid").val(togglepassword); + $("#changepasswordpwd").val(""); + $(this).parent().append( $('#changepassword') ); + $('#changepassword').show(); + } + else{ + $('#changepassword').hide(); + togglepassword = ""; + } + }); + + $("#changepasswordbutton").click( function(){ + // Serialize the data + var post = $( "#changepasswordform" ).serialize(); + // Ajax foo + $.post( 'ajax/changepassword.php', post, function(data){ + if( data.status == "success" ){ + togglepassword = ""; + $('#changepassword').hide(); + } + else{ + alert( "something went wrong! sorry!" ); + } + }); + return false; + }); + + // Groups + $("span[x-use='usergroupsspan']").live( "click", function(){ + if( togglegroup == "" || $(this).parent().parent().attr("x-uid") != togglegroup){ + togglegroup = $(this).parent().parent().attr("x-uid"); + var groups = $(this).text(); + groups = groups.split(", "); + $("input[x-use='togglegroup']").each( function(index){ + var check = false; + // Group checked? + for( var i = 0; i < groups.length; i++ ){ + if( $(this).val() == groups[i] ){ + check = true; + } + } + + // Check/uncheck + if( check ){ + $(this).attr("checked","checked"); + } + else{ + $(this).removeAttr("checked"); + } + }); + $("#changegroupuid").val(togglegroup); + $(this).parent().append( $('#changegroups') ); + $('#changegroups').show(); + } + else{ + var groups = []; + $("input[x-use='togglegroup']").each( function(index){ + if( $(this).attr("checked")){ + groups.push($(this).val()); + } + }); + $(this).html( groups.join(", ")); + $('#changegroups').hide(); + togglegroup = ""; + } + }); + + $("span[x-use='togglegroup']").live( "click", function(){ + if( $(this).prev().attr("checked")){ + $(this).prev().removeAttr("checked") + } + else{ + $(this).prev().attr("checked","checked") + } + doToggleGroup( $(this).attr("x-gid")); + }); + + $("input[x-use='togglegroup']").live( "click", function(){ + doToggleGroup( $(this).attr("x-gid")); + }); //######################################################################### // Clicking on buttons //######################################################################### @@ -100,15 +210,8 @@ $(document).ready(function(){ return false; }); - $( ".edituserbutton" ).live( 'click', function(){ - uid = $( this ).parent().attr( 'x-uid' ); - $("#edituserusername").html(uid); - $("#edituserform").dialog("open"); - return false; - }); - $( ".removeuserbutton" ).live( 'click', function() { - uid = $( this ).parent().attr( 'x-uid' ); + uid = $( this ).parent().parent().attr( 'x-uid' ); $("#deleteuserusername").html(uid); $("#deleteusernamefield").val(uid); $("#removeuserform").dialog( "open" ); @@ -132,7 +235,7 @@ $(document).ready(function(){ }); $( ".removegroupbutton" ).live( 'click', function(){ - gid = $( this ).parent().attr( 'x-gid' ); + gid = $( this ).parent().parent().attr( 'x-gid' ); $("#removegroupgroupname").html(gid); $("#removegroupnamefield").val(gid); $("#removegroupform").dialog( "open" ); @@ -143,25 +246,6 @@ $(document).ready(function(){ // Dialogs //######################################################################### - // Edit user dialog - $( "#edituserform" ).dialog({ - autoOpen: false, - height: 500, - width: 500, - modal: true, - buttons: { - "Edit user": function() { - $( this ).dialog( "close" ); - }, - Cancel: function() { - $( this ).dialog( "close" ); - } - }, - close: function() { - true; - } - }); - // Removing users $( "#removeuserform" ).dialog({ autoOpen: false, diff --git a/admin/templates/users.php b/admin/templates/users.php index 081ba189e9b..509fca64103 100644 --- a/admin/templates/users.php +++ b/admin/templates/users.php @@ -34,10 +34,10 @@ - - - - ">edit | remove + "> + + + remove @@ -61,9 +61,9 @@ - + "> - ">remove + remove @@ -71,20 +71,23 @@ -
-
- $user
-
- New password: - -
- -
- - " type="checkbox" name="groups[]" value="" /> - ">
- -
+
+ + diff --git a/lib/User/database.php b/lib/User/database.php index 9a059c1b235..478ebc0967d 100644 --- a/lib/User/database.php +++ b/lib/User/database.php @@ -134,12 +134,7 @@ class OC_USER_DATABASE extends OC_USER_BACKEND { $query = OC_DB::prepare( "UPDATE *PREFIX*users SET password = ? WHERE uid = ?" ); $result = $query->execute( array( sha1( $password ), $username )); - if( $result->numRows() > 0 ){ - return true; - } - else{ - return false; - } + return true; } /**