Unpersonate.php 1.52 KiB
<?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();