2013-12-26 13:34:48 +01:00
< ? php
/**
2014-08-22 22:34:13 +02:00
* Route user actions .
*/
function users_controller () {
global $privileges , $user ;
if ( ! isset ( $user ))
redirect ( page_link_to ( '' ));
if ( ! isset ( $_REQUEST [ 'action' ]))
$_REQUEST [ 'action' ] = 'list' ;
switch ( $_REQUEST [ 'action' ]) {
default :
case 'list' :
return users_list_controller ();
case 'view' :
return user_controller ();
case 'edit' :
return user_edit_controller ();
case 'delete' :
return user_delete_controller ();
}
}
function user_controller () {
global $privileges , $user ;
if ( isset ( $_REQUEST [ 'user_id' ])) {
$user_source = User ( $_REQUEST [ 'user_id' ]);
} else
$user_source = $user ;
$admin_user_privilege = in_array ( 'admin_user' , $privileges );
return array (
$user_source [ 'Nick' ],
User_view ( $user_source )
);
}
function users_list_controller () {
redirect ( page_link_to ( 'admin_user' ));
}
/**
* User password recovery .
* ( By email )
2013-12-26 13:34:48 +01:00
*/
function user_password_recovery_controller () {
if ( isset ( $_REQUEST [ 'token' ])) {
$user_source = User_by_password_recovery_token ( $_REQUEST [ 'token' ]);
if ( $user_source === false )
engelsystem_error ( " Unable to load user. " );
if ( $user_source == null ) {
error ( _ ( " Token is not correct. " ));
redirect ( page_link_to ( 'login' ));
}
if ( isset ( $_REQUEST [ 'submit' ])) {
$ok = true ;
if ( isset ( $_REQUEST [ 'password' ]) && strlen ( $_REQUEST [ 'password' ]) >= MIN_PASSWORD_LENGTH ) {
if ( $_REQUEST [ 'password' ] != $_REQUEST [ 'password2' ]) {
$ok = false ;
error ( _ ( " Your passwords don't match. " ));
}
} else {
$ok = false ;
error ( _ ( " Your password is to short (please use at least 6 characters). " ));
}
if ( $ok ) {
$result = set_password ( $user_source [ 'UID' ], $_REQUEST [ 'password' ]);
if ( $result === false )
engelsystem_error ( _ ( " Password could not be updated. " ));
success ( _ ( " Password saved. " ));
redirect ( page_link_to ( 'login' ));
}
}
return User_password_set_view ();
} else {
if ( isset ( $_REQUEST [ 'submit' ])) {
$ok = true ;
if ( isset ( $_REQUEST [ 'email' ]) && strlen ( strip_request_item ( 'email' )) > 0 ) {
$email = strip_request_item ( 'email' );
if ( check_email ( $email )) {
$user_source = User_by_email ( $email );
if ( $user_source === false )
engelsystem_error ( " Unable to load user. " );
if ( $user_source == null ) {
$ok = false ;
2014-03-12 17:36:55 +01:00
error ( _ ( " E-mail address is not correct. " ));
2013-12-26 13:34:48 +01:00
}
} else {
$ok = false ;
2014-03-12 17:36:55 +01:00
error ( _ ( " E-mail address is not correct. " ));
2013-12-26 13:34:48 +01:00
}
} else {
$ok = false ;
2014-03-12 17:36:55 +01:00
error ( _ ( " Please enter your e-mail. " ));
2013-12-26 13:34:48 +01:00
}
if ( $ok ) {
$token = User_generate_password_recovery_token ( $user_source );
if ( $token === false )
engelsystem_error ( " Unable to generate password recovery token. " );
$result = engelsystem_email_to_user ( $user_source , _ ( " Password recovery " ), sprintf ( _ ( " Please visit %s to recover your password. " ), page_link_to_absolute ( 'user_password_recovery' ) . '&token=' . $token ));
if ( $result === false )
engelsystem_error ( " Unable to send password recovery email. " );
success ( _ ( " We sent an email containing your password recovery link. " ));
redirect ( page_link_to ( 'login' ));
}
}
return User_password_recovery_view ();
}
}
2014-01-07 16:19:35 +01:00
/**
* Menu title for password recovery .
*/
2013-12-26 13:34:48 +01:00
function user_password_recovery_title () {
return _ ( " Password recovery " );
}
?>