HybridAuth не входит со страницы &service=logout

Если совершить выход и сразу с этой страницы пробовать войти через HybridAuth, плагин будет делать редирект на страницу yoursite.ru/?service=logout, то есть тут же выходить.

Я написал костыль в плагин HybridAuth — возможно не самое правильное решение, но в моей ситуации помогает. В самом низу просто вырезаю значения из url`ов в массиве $arr.

$arr = str_replace([«service=logout&», "?service=logout"], "", $arr);

if ($modx->user->isAuthenticated($modx->context->key)) {
	$add = array();
	if ($services = $modx->user->getMany('Services')) {
		/* @var haUserService $service */
		foreach ($services as $service) {
			$add = array_merge($add, $service->toArray(strtolower($service->get('provider') . '.')));
		}
	}

	$user = $modx->user->toArray();
	$profile = $modx->user->Profile->toArray();
	unset($profile['id']);
	$arr = array_merge(
		$user,
		$profile,
		$add,
		array(
			'login_url' => $url . 'login',
			'logout_url' => $url . 'logout',
			'providers' => $HybridAuth->getProvidersLinks($providerTpl, $activeProviderTpl),
			'error' => $error,
			'gravatar' => 'https://gravatar.com/avatar/' . md5(strtolower($profile['email'])),
		)
	);

	return $modx->getChunk($logoutTpl, $arr);
}
else {
	$arr = array(
		'login_url' => $url . 'login',
		'logout_url' => $url . 'logout',
		'providers' => $HybridAuth->getProvidersLinks($providerTpl, $activeProviderTpl),
		'error' => $error,
	);
  	$arr = str_replace(["service=logout&", "?service=logout"], "", $arr);

	return $modx->getChunk($loginTpl, $arr);
}
Денис
24 ноября 2015, 18:51
modx.pro
1
1 315
+1

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0