if ($modx->context->key == 'mgr' || empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') return;
switch ($_POST['action']) {
    case '2faOn':
        $output = array('success' => false, 'message' => '');
        $modx->log(1,print_r($_POST['fields'],1));
        function filter(&$value) {
             $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
        }
        array_walk_recursive($_POST, "filter");
        
        $user_id = $_POST['fields']['user_id'];
        // Получаем объект modUser
        if ($user = $modx->getObject('modUser', $user_id)) {
        	// Получаем связанный с ним профиль пользователя
        	if ($profile = $user->getOne('Profile')) {
        		// Получаем специальное поле extended
        		$extended = $profile->get('extended');
        		// Добавляем новое значение
        		if($_POST['fields']['2fa-chek'] == 'email'){
        		    $extended['2fa'] = 'email';
        		}elseif($_POST['fields']['2fa-chek'] == 'google'){
        		    $extended['2fa'] = 'google';
        		}
        		else{
        		    $extended['2fa'] = '';
        		}
        		
        		// И сохраняем обратно в профиль
        		$profile->set('extended', $extended);
        		$profile->save();
        		$output['success'] = true;
        		$output['message'] =  'Сохранено';
        	}
        }else{
           $output['message'] =  'Пользователь не найден';  
        }
        
        
        
        $output = json_encode($output);
        die($output);
        break;
    case '2faReset':
        $output = array('success' => false, 'message' => '');
        $modx->log(1,print_r($_POST['fields'],1));
        function filter(&$value) {
             $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
        }
        array_walk_recursive($_POST, "filter");
        
        $user_email = $_POST['fields']['email'];
       
        // Получаем объект modUser
        if ($user = $modx->getObject('modUser', array('username' => $user_email))) {
        	// Получаем связанный с ним профиль пользователя
        	if ($profile = $user->getOne('Profile')) {
        		// Получаем специальное поле extended
        		$extended = $profile->get('extended');
        		// Добавляем новое значение
        		if ($extended['resetTfa']){
        		   if ($extended['resetTfa'] == $_POST['fields']['reset_key']){
        		        $extended['userKey'] = '';
                		$extended['2fa'] = '';
                		$extended['resetTfa'] = '';
                		$profile->set('extended', $extended);
                		$profile->save();
                		$output['success'] = true;
                		$output['message'] =  'Двухфактарная авторизация удалена';
        		    }else{
        		        $output['message'] =  'Неверный ключ'; 
        		    }
        		}else{
        		    $output['message'] =  'Ключ не существует'; 
        		}
        		
        		
        	}
        }else{
           $output['message'] =  'Пользователь не найден';  
        }
        
        
        
        $output = json_encode($output);
        die($output);
        break;    
    case '2faOn_remove':
        $output = array('success' => false, 'message' => '');
        //$modx->log(1,print_r($_POST['fields'],1));
        function filter(&$value) {
             $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
        }
        array_walk_recursive($_POST, "filter");
        
        $user_id = $_POST['fields']['user_id'];
        if ($user = $modx->getObject('modUser', $user_id)) {
        	if ($profile = $user->getOne('Profile')) {
        		$extended = $profile->get('extended');
        		$extended['userKey'] = '';
        		$extended['2fa'] = '';
        		$profile->set('extended', $extended);
        		$profile->save();
        		$output['success'] = true;
        		$output['message'] =  'Удалено';
        	}
        }else{
           $output['message'] =  'Пользователь не найден';  
        }
        
        
        
        $output = json_encode($output);
        die($output);
        break;    
   
    default:
        return;
        break;
}