Bugfixing redirects
- Adding App->redirect if both redirects are possible
This commit is contained in:
parent
9c9ebfc7c9
commit
48535c0959
4 changed files with 25 additions and 19 deletions
|
@ -15,11 +15,7 @@ function randprof_init(App $a)
|
||||||
if ($x) {
|
if ($x) {
|
||||||
$link = Contact::magicLink($x);
|
$link = Contact::magicLink($x);
|
||||||
// @TODO making the return of magicLink save to use either externalRedirect or internalRedirect
|
// @TODO making the return of magicLink save to use either externalRedirect or internalRedirect
|
||||||
if (filter_var($link, FILTER_VALIDATE_URL)) {
|
$a->redirect($link);
|
||||||
System::externalRedirect($link);
|
|
||||||
} else {
|
|
||||||
$a->internalRedirect($link);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$a->internalRedirect('profile');
|
$a->internalRedirect('profile');
|
||||||
|
|
|
@ -36,7 +36,7 @@ function redir_init(App $a) {
|
||||||
|| (!local_user() && !remote_user()) // Visitors (not logged in or not remotes) can't authenticate.
|
|| (!local_user() && !remote_user()) // Visitors (not logged in or not remotes) can't authenticate.
|
||||||
|| (!empty($a->contact['id']) && $a->contact['id'] == $cid)) // Local user is already authenticated.
|
|| (!empty($a->contact['id']) && $a->contact['id'] == $cid)) // Local user is already authenticated.
|
||||||
{
|
{
|
||||||
System::externalRedirect(defaults($url, $contact_url));
|
$a->redirect(defaults($url, $contact_url));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($contact['uid'] == 0 && local_user()) {
|
if ($contact['uid'] == 0 && local_user()) {
|
||||||
|
@ -52,7 +52,7 @@ function redir_init(App $a) {
|
||||||
// Local user is already authenticated.
|
// Local user is already authenticated.
|
||||||
$target_url = defaults($url, $contact_url);
|
$target_url = defaults($url, $contact_url);
|
||||||
logger($contact['name'] . " is already authenticated. Redirecting to " . $target_url, LOGGER_DEBUG);
|
logger($contact['name'] . " is already authenticated. Redirecting to " . $target_url, LOGGER_DEBUG);
|
||||||
System::externalRedirect($target_url);
|
$a->redirect($target_url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ function redir_init(App $a) {
|
||||||
// Remote user is already authenticated.
|
// Remote user is already authenticated.
|
||||||
$target_url = defaults($url, $contact_url);
|
$target_url = defaults($url, $contact_url);
|
||||||
logger($contact['name'] . " is already authenticated. Redirecting to " . $target_url, LOGGER_DEBUG);
|
logger($contact['name'] . " is already authenticated. Redirecting to " . $target_url, LOGGER_DEBUG);
|
||||||
System::externalRedirect($target_url);
|
$a->redirect($target_url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ function redir_init(App $a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
logger('redirecting to ' . $url, LOGGER_DEBUG);
|
logger('redirecting to ' . $url, LOGGER_DEBUG);
|
||||||
System::externalRedirect($url);
|
$a->redirect($url);
|
||||||
}
|
}
|
||||||
|
|
||||||
notice(L10n::t('Contact not found.'));
|
notice(L10n::t('Contact not found.'));
|
||||||
|
|
18
src/App.php
18
src/App.php
|
@ -8,6 +8,7 @@ use Detection\MobileDetect;
|
||||||
use DOMDocument;
|
use DOMDocument;
|
||||||
use DOMXPath;
|
use DOMXPath;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Friendica\Core\System;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Network\HTTPException\InternalServerErrorException;
|
use Friendica\Network\HTTPException\InternalServerErrorException;
|
||||||
|
|
||||||
|
@ -2006,4 +2007,21 @@ class App
|
||||||
$redirectTo = $this->getBaseURL($ssl) . '/' . ltrim($toUrl, '/');
|
$redirectTo = $this->getBaseURL($ssl) . '/' . ltrim($toUrl, '/');
|
||||||
Core\System::externalRedirect($redirectTo);
|
Core\System::externalRedirect($redirectTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Redirects to another URL in case
|
||||||
|
* Should only be used if it isn't clear if the URL is either internal or external
|
||||||
|
*
|
||||||
|
* @param string $toUrl The target URL
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function redirect($toUrl)
|
||||||
|
{
|
||||||
|
if (filter_var($toUrl, FILTER_VALIDATE_URL))
|
||||||
|
{
|
||||||
|
System::externalRedirect($toUrl);
|
||||||
|
} else {
|
||||||
|
$this->internalRedirect($toUrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,11 +43,7 @@ class Magic extends BaseModule
|
||||||
if (!$cid) {
|
if (!$cid) {
|
||||||
logger('No contact record found: ' . print_r($_REQUEST, true), LOGGER_DEBUG);
|
logger('No contact record found: ' . print_r($_REQUEST, true), LOGGER_DEBUG);
|
||||||
// @TODO Finding a more elegant possibility to redirect to either internal or external URL
|
// @TODO Finding a more elegant possibility to redirect to either internal or external URL
|
||||||
if (filter_var($dest, FILTER_VALIDATE_URL)) {
|
$a->redirect($dest);
|
||||||
System::externalRedirect($dest);
|
|
||||||
} else {
|
|
||||||
$a->internalRedirect($dest);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$contact = DBA::selectFirst('contact', ['id', 'nurl', 'url'], ['id' => $cid]);
|
$contact = DBA::selectFirst('contact', ['id', 'nurl', 'url'], ['id' => $cid]);
|
||||||
|
|
||||||
|
@ -117,10 +113,6 @@ class Magic extends BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
// @TODO Finding a more elegant possibility to redirect to either internal or external URL
|
// @TODO Finding a more elegant possibility to redirect to either internal or external URL
|
||||||
if (filter_var($dest, FILTER_VALIDATE_URL)) {
|
$a->redirect($dest);
|
||||||
System::externalRedirect($dest);
|
|
||||||
} else {
|
|
||||||
$a->internalRedirect($dest);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue