Elgg  Version 4.3
login_as.php
Go to the documentation of this file.
1 <?php
9 
10 $user_guid = (int) get_input('user_guid');
11 
13 if (empty($user)) {
14  return elgg_error_response(elgg_echo('action:user:login_as:unknown'));
15 }
16 
19 
20 // store the original persistent login state to restore on logout_as.
21 $persistent = false;
22 if (isset($_COOKIE['elggperm'])) {
23  if (($original_perm_user = elgg_get_user_by_persistent_token($_COOKIE['elggperm'])) && $original_user->guid == $original_perm_user->guid) {
24  $persistent = true;
25  }
26 }
27 
29 $session->set('login_as_original_user_guid', $original_user_guid);
30 $session->set('login_as_original_persistent', $persistent);
31 
32 try {
34 
35  return elgg_ok_response('', elgg_echo('action:user:login_as:success', [$user->getDisplayName()]));
36 } catch (LoginException $exc) {
37  $session->remove('login_as_original_user_guid');
38  $session->remove('login_as_original_persistent');
39 
40  try {
42  } catch (LoginException $ex) {
43  // we can't log back in as ourselves? just leave us logged out then...
44  }
45 
46  return elgg_error_response(elgg_echo('action:user:login_as:error', [$user->getDisplayName()]));
47 }
$original_user_guid
Definition: login_as.php:18
$user_guid
Definition: login_as.php:10
get_user($guid)
Get a user object from a GUID.
Definition: users.php:20
Generic parent class for login exceptions.
elgg_get_user_by_persistent_token(string $token)
Get a user based on a persistent login token.
Definition: users.php:201
elgg_get_session()
Gets Elgg&#39;s session object.
Definition: sessions.php:15
elgg_echo($message_key, array $args=[], $language="")
Elgg language module Functions to manage language and translations.
Definition: languages.php:18
if(empty($user)) $original_user
Definition: login_as.php:17
get_input($variable, $default=null, $filter_result=true)
Parameter input functions.
Definition: input.php:20
$user
Definition: login_as.php:12
if(isset($_COOKIE['elggperm'])) $session
Definition: login_as.php:28
elgg_login(\ElggUser $user, bool $persistent=false)
Log in a user.
Definition: sessions.php:81
elgg_error_response($message= '', $forward_url=REFERRER, int $status_code=ELGG_HTTP_BAD_REQUEST)
Prepare an error response to be returned by a page or an action handler.
elgg_ok_response($content= '', $message= '', $forward_url=null, int $status_code=ELGG_HTTP_OK)
Prepares a successful response to be returned by a page or an action handler.
$persistent
Definition: login_as.php:21
elgg_get_logged_in_user_entity()
Return the current logged in user, or null if no user is logged in.
Definition: sessions.php:24
Login as the specified user.