Merge pull request #6020 from nupplaphil/friendica-5996

Bugfixing redirects
This commit is contained in:
Hypolite Petovan 2018-10-24 14:54:51 -04:00 committed by GitHub
commit e3f6e7807c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 20 deletions

View file

@ -14,12 +14,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 $a->redirect($link);
if (filter_var($link, FILTER_VALIDATE_URL)) {
System::externalRedirect($link);
} else {
$a->internalRedirect($link);
}
} }
$a->internalRedirect('profile'); $a->internalRedirect('profile');

View file

@ -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.'));

View file

@ -2006,4 +2006,20 @@ class App
$redirectTo = $this->getBaseURL($ssl) . '/' . ltrim($toUrl, '/'); $redirectTo = $this->getBaseURL($ssl) . '/' . ltrim($toUrl, '/');
Core\System::externalRedirect($redirectTo); Core\System::externalRedirect($redirectTo);
} }
/**
* Automatically redirects to relative or absolute URL
* 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)) {
Core\System::externalRedirect($toUrl);
} else {
$this->internalRedirect($toUrl);
}
}
} }

View file

@ -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);
}
} }
} }