-
Bastien Ho authored08d3a92b
<?php
use CRM_ImpersonateWordPressUsers_ExtensionUtil as E;
class CRM_ImpersonateWordPressUsers_Page_Unpersonate extends CRM_Core_Page
{
public function run()
{
CRM_Utils_System::setTitle(E::ts('Impersonate'));
// Fetch the originating user data:
$old_user = E::get_old_user();
if ( ! $old_user ) {
wp_die( E::ts( 'Could not get original user.' ), 400 );
}
// Check authentication:
if ( ! E::authenticate_old_user( $old_user ) ) {
wp_die( E::ts( 'Could not authenticate original users.' ), 403 );
}
// Switch user:
if ( E::switch_to_user( $old_user->ID, E::remember(), false ) ) {
if ( ! empty( $_REQUEST['interim-login'] ) && function_exists( 'login_header' ) ) {
$GLOBALS['interim_login'] = 'success'; // @codingStandardsIgnoreLine
login_header( '', '' );
exit;
}
$redirect_to = add_query_arg(['page'=>'CiviCRM'], admin_url('admin.php'));
if ( $redirect_to ) {
wp_safe_redirect( $redirect_to );
}
else {
wp_safe_redirect( admin_url() );
}
exit;
}
else {
wp_die( E::ts( 'Could not switch users.' ), 404 );
}
$unimpersonate_url = CRM_Utils_System::url('civicrm/contact/unimpersonate', "action=unimpersonate");
$this->assign('unimpersonate_url', $unimpersonate_url);
parent::run();
}
}