Browse Source

edit username email password in admin settings

Christopher Johnson 8 years ago
parent
commit
81dbfc58fb
4 changed files with 109 additions and 2 deletions
  1. 42 0
      api/functions/api-functions.php
  2. 24 0
      api/pages/settings-user-manage-users.php
  3. 41 0
      js/custom.js
  4. 2 2
      js/functions.js

+ 42 - 0
api/functions/api-functions.php

@@ -477,6 +477,36 @@ function adminEditUser($array){
                 return false;
             }
             break;
+        case 'editUser':
+            try {
+                $connect = new Dibi\Connection([
+                    'driver' => 'sqlite3',
+                    'database' => $GLOBALS['dbLocation'].$GLOBALS['dbName'],
+                ]);
+                if(!usernameTakenExcept($array['data']['username'],$array['data']['email'],$array['data']['id'])){
+                    $connect->query('
+                        UPDATE users SET', [
+                            'username' => $array['data']['username'],
+                            'email' => $array['data']['email'],
+                        ], '
+                        WHERE id=?', $array['data']['id']);
+                    if(!empty($array['data']['password'])){
+                        $connect->query('
+                            UPDATE users SET', [
+                                'password' => password_hash($array['data']['password'], PASSWORD_BCRYPT)
+                            ], '
+                            WHERE id=?', $array['data']['id']);
+                    }
+                    writeLog('success', 'User Management Function - User: '.$array['data']['username'].'\'s info was changed', $GLOBALS['organizrUser']['username']);
+                    return true;
+                }else{
+                    return false;
+                }
+            } catch (Dibi\Exception $e) {
+                writeLog('error', 'User Management Function - Error - User: '.$array['data']['username'].'\'s group was changed from ['.$array['data']['oldGroup'].'] to ['.$array['data']['newGroupName'].']', $GLOBALS['organizrUser']['username']);
+                return false;
+            }
+            break;
         case 'addNewUser':
             $defaults = defaultUserGroup();
             if(createUser($array['data']['username'],$array['data']['password'],$defaults,$array['data']['email'])){
@@ -835,6 +865,18 @@ function usernameTaken($username,$email){
         return false;
     }
 }
+function usernameTakenExcept($username,$email,$id){
+    try {
+    	$connect = new Dibi\Connection([
+    		'driver' => 'sqlite3',
+    		'database' => $GLOBALS['dbLocation'].$GLOBALS['dbName'],
+    	]);
+        $all = $connect->fetch('SELECT * FROM users WHERE id IS NOT ? AND username = ? COLLATE NOCASE OR id IS NOT ? AND email = ? COLLATE NOCASE',$id,$username,$id,$email);
+        return ($all) ? true : false;
+    } catch (Dibi\Exception $e) {
+        return false;
+    }
+}
 function createUser($username,$password,$defaults,$email=null) {
     $email = ($email) ? $email : random_ascii_string(10).'@placeholder.eml';
     try {

+ 24 - 0
api/pages/settings-user-manage-users.php

@@ -45,4 +45,28 @@ $pageSettingsUserManageUsers = '
     <button class="btn btn-sm btn-info btn-rounded waves-effect waves-light pull-right row b-none addNewUser" type="button"><span class="btn-label"><i class="fa fa-plus"></i></span><span lang="en">Add User</span></button>
     <div class="clearfix"></div>
 </form>
+<form id="edit-user-form" class="mfp-hide white-popup-block mfp-with-anim">
+    <input type="hidden" name="id" value="">
+    <h1 lang="en">Edit User</h1>
+    <fieldset style="border:0;">
+        <div class="form-group">
+            <label class="control-label" for="edit-user-form-inputUsername" lang="en">Username</label>
+            <input type="text" class="form-control" id="edit-user-form-inputUsername" name="username" required="" autofocus>
+        </div>
+        <div class="form-group">
+            <label class="control-label" for="edit-user-form-inputEmail" lang="en">Email</label>
+            <input type="text" class="form-control" id="edit-user-form-inputEmail" name="email" required="" autofocus>
+        </div>
+        <div class="form-group">
+            <label class="control-label" for="edit-user-form-inputPassword" lang="en">Password</label>
+            <input type="password" class="form-control" id="edit-user-form-inputPassword" name="password"  required="">
+        </div>
+        <div class="form-group">
+            <label class="control-label" for="edit-user-form-inputPassword2" lang="en">Password Again</label>
+            <input type="password" class="form-control" id="edit-user-form-inputPassword2" name="password2"  required="">
+        </div>
+    </fieldset>
+    <button class="btn btn-sm btn-info btn-rounded waves-effect waves-light pull-right row b-none editUserAdmin" type="button"><span class="btn-label"><i class="fa fa-plus"></i></span><span lang="en">Edit User</span></button>
+    <div class="clearfix"></div>
+</form>
 ';

+ 41 - 0
js/custom.js

@@ -575,6 +575,47 @@ $(document).on("click", ".addNewUser", function () {
         $.magnificPopup.close();
     }
 });
+//EDIT GROUP GET ID
+$(document).on("click", ".editUserButton", function () {
+    $('#edit-user-form [name=username]').val($(this).parent().parent().attr("data-username"));
+    $('#edit-user-form [name=id]').val($(this).parent().parent().attr("data-id"));
+    $('#edit-user-form [name=email]').val($(this).parent().parent().attr("data-email"));
+});
+//EDIT GROUP
+$(document).on("click", ".editUserAdmin", function () {
+    //Create POST Array
+    var post = {
+        action:'editUser',
+        api:'api/?v1/settings/user/manage/users',
+        id:$('#edit-user-form [name=id]').val(),
+        username:$('#edit-user-form [name=username]').val(),
+        email:$('#edit-user-form [name=email]').val(),
+        password:$('#edit-user-form [name=password]').val(),
+        messageTitle:'',
+        messageBody:'Edited User '+$('#edit-user-form [name=username]').val(),
+        error:'Organizr Function: API Connection Failed'
+    };
+    if (typeof post.id == 'undefined' || post.id == '') {
+        message('Edit User Error',' Could not get User ID','bottom-right','#FFF','error','5000');
+    }
+    if (typeof post.username == 'undefined' || post.username == '') {
+        message('Edit User Error',' Please set a Username','bottom-right','#FFF','warning','5000');
+    }
+    if (typeof post.email == 'undefined' || post.email == '') {
+        message('Edit User Error',' Please set a User Email','bottom-right','#FFF','warning','5000');
+    }
+    if (post.password !== '' && post.password !== $('#edit-user-form [name=password2]').val()){
+        message('Edit User Error',' Passwords do not match!','bottom-right','#FFF','warning','5000');
+    }
+    console.log(post);
+    if(post.id !== '' && post.username !== '' && post.email !== '' ){
+        var callbacks = $.Callbacks();
+        callbacks.add( buildUserManagement );
+        settingsAPI(post,callbacks);
+        clearForm('#edit-user-form');
+        $.magnificPopup.close();
+    }
+});
 // CHANGE USER GROUP
 $(document).on("change", ".userGroupSelect", function () {
     //Create POST Array

+ 2 - 2
js/functions.js

@@ -1067,7 +1067,7 @@ function buildUserManagementItem(array){
 	$.each(array.users, function(i,v) {
 		var disabledDelete = (v.group_id == 999 || v.group_id == 0) ? 'disabled' : 'deleteUser';
 		userList += `
-		<tr class="userManagement" data-id="`+v.id+`" data-username="`+v.username+`" data-group="`+v.group+`">
+		<tr class="userManagement" data-id="`+v.id+`" data-username="`+v.username+`" data-group="`+v.group+`" data-email="`+v.email+`">
 			<td class="text-center el-element-overlay">
 				<div class="el-card-item p-0">
 					<div class="el-card-avatar el-overlay-1 m-0">
@@ -1085,7 +1085,7 @@ function buildUserManagementItem(array){
 			<td>`+moment(v.register_date).format('ll')+`
 				<br/><span class="text-muted">`+moment(v.register_date).format('LT')+`</span></td>
 			`+buildUserGroupSelect(array.groups,v.id,v.group_id)+`
-			<td><button type="button" class="btn btn-info btn-outline btn-circle btn-lg m-r-5 editUser"><i class="ti-pencil-alt"></i></button></td>
+			<td><button type="button" class="btn btn-info btn-outline btn-circle btn-lg m-r-5 editUserButton popup-with-form" href="#edit-user-form" data-effect="mfp-3d-unfold"><i class="ti-pencil-alt"></i></button></td>
 			<td><button type="button" class="btn btn-info btn-outline btn-circle btn-lg m-r-20"><i class="ti-email"></i></button></td>
 			<td><button type="button" class="btn btn-danger btn-outline btn-circle btn-lg m-r-5 `+disabledDelete+`"><i class="ti-trash"></i></button></td>
 		</tr>