packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/users.php
changeset 0 3906ca745819
child 4 2212b2ded8bf
equal deleted inserted replaced
-1:000000000000 0:3906ca745819
       
     1 <?php
       
     2 
       
     3 require('includes/starthere.php');
       
     4 
       
     5 // POSTed actions
       
     6 if ( !empty($_SERVER['PATH_INFO']) )
       
     7 {
       
     8 	$pi = explode('/', trim($_SERVER['PATH_INFO'], '/'));
       
     9 	switch($pi[0])
       
    10 	{
       
    11 		case 'disable':
       
    12 			if ( !isset($pi[1]) )
       
    13 				break;
       
    14 			
       
    15 			$user =& $pi[1];
       
    16 			$userinfo = ldap_get_user($user);
       
    17 			if ( !$userinfo )
       
    18 				break;
       
    19 			
       
    20 			disable_user($user);
       
    21 			
       
    22 			queue_message(E_NOTICE, "{$userinfo['cn']}'s account was disabled.");
       
    23 			break;
       
    24 		case 'enable':
       
    25 			if ( !isset($pi[1]) )
       
    26 				break;
       
    27 			
       
    28 			$user =& $pi[1];
       
    29 			$userinfo = ldap_get_user($user);
       
    30 			if ( !$userinfo )
       
    31 				break;
       
    32 			
       
    33 			enable_user($user);
       
    34 			
       
    35 			queue_message(E_NOTICE, "{$userinfo['cn']}'s account was enabled.");
       
    36 			break;
       
    37 		case 'delete':
       
    38 			if ( !isset($pi[1]) )
       
    39 				break;
       
    40 			
       
    41 			$user =& $pi[1];
       
    42 			$userinfo = ldap_get_user($user);
       
    43 			if ( !$userinfo )
       
    44 				break;
       
    45 			
       
    46 			delete_user($user);
       
    47 			
       
    48 			queue_message(E_NOTICE, "{$userinfo['cn']}'s account was deleted.");
       
    49 			break;
       
    50 		case 'create':
       
    51 			
       
    52 			if ( empty($_POST) )
       
    53 			{
       
    54 				queue_message(E_ERROR, "Bad request");
       
    55 				break;
       
    56 			}
       
    57 			
       
    58 			// basic re-validation
       
    59 			if ( $_POST['password'] !== $_POST['password_confirm'] )
       
    60 			{
       
    61 				queue_message(E_ERROR, "Passwords do not match");
       
    62 				break;
       
    63 			}
       
    64 			
       
    65 			if ( empty($_POST['cn']) )
       
    66 				$_POST['cn'] = "{$_POST['givenName']} {$_POST['surname']}";
       
    67 			
       
    68 			if ( empty($_POST['uid']) )
       
    69 				$_POST['uid'] = sprintf("%s%s", strtolower($_POST['givenName']{0}), strtolower(preg_replace('/[^A-Za-z0-9]/', '', $_POST['surname'])));
       
    70 			
       
    71 			if ( create_user($_POST['uid'], $_POST['password'], $_POST['givenName'], $_POST['surname'], $_POST['cn'], $_POST['title']) )
       
    72 				queue_message(E_NOTICE, "{$_POST['cn']}'s account has been created!");
       
    73 			else
       
    74 				queue_message(E_ERROR, "Failed to create account");
       
    75 			
       
    76 			break;
       
    77 		case 'resetpw':
       
    78 			
       
    79 			if ( empty($_POST) )
       
    80 			{
       
    81 				queue_message(E_ERROR, "Bad request");
       
    82 				break;
       
    83 			}
       
    84 			
       
    85 			// basic re-validation
       
    86 			if ( $_POST['password'] !== $_POST['password_confirm'] || empty($_POST['uid']) )
       
    87 			{
       
    88 				queue_message(E_ERROR, "Passwords do not match");
       
    89 				break;
       
    90 			}
       
    91 			
       
    92 			$userinfo = ldap_get_user($_POST['uid']);
       
    93 			if ( !$userinfo )
       
    94 				break;
       
    95 			
       
    96 			if ( reset_password($_POST['uid'], $_POST['password']) )
       
    97 				queue_message(E_NOTICE, "{$userinfo['cn']}'s password has been reset.");
       
    98 			else
       
    99 				queue_message(E_ERROR, "Failed to reset password");
       
   100 			
       
   101 			break;
       
   102 			
       
   103 		case 'edit':
       
   104 			if ( !isset($pi[1]) )
       
   105 				break;
       
   106 			
       
   107 			$user =& $pi[1];
       
   108 			$userinfo = ldap_get_user($user);
       
   109 			if ( !$userinfo )
       
   110 				break;
       
   111 			
       
   112 			if ( !empty($_POST) )
       
   113 			{
       
   114 				if ( ldap_update_user($user, $_POST['entry']) )
       
   115 				{
       
   116 					queue_message(E_NOTICE, "Updated user \"{$_POST['entry']['cn'][0]}\".");
       
   117 					redirect('/users');
       
   118 				}
       
   119 			}
       
   120 			
       
   121 			display_template('useredit', array(
       
   122 					'this_user' => $userinfo
       
   123 					, 'readonly' => $ldap_readonly_attrs
       
   124 					, 'field_names' => $ldap_field_names
       
   125 					, 'dn' => ldap_make_user_dn($user)
       
   126 				));
       
   127 			
       
   128 			exit;
       
   129 			break;
       
   130 	}
       
   131 }
       
   132 
       
   133 // list users, and fill with enabled status for the UI
       
   134 $users = ldap_list_users();
       
   135 foreach ( $users as $username => &$u )
       
   136 {
       
   137 	$u['enabled'] = is_user_enabled($username);
       
   138 }
       
   139 unset($u);
       
   140 
       
   141 // Present the UI
       
   142 display_template('users', array(
       
   143 		'users' => $users
       
   144 	));