Issue 6168: "redir" now mostly use OWA

This commit is contained in:
Michael 2018-12-04 07:12:55 +00:00
parent 89f5a9c550
commit 491fc5f78a
6 changed files with 34 additions and 10 deletions

View file

@ -561,11 +561,7 @@ function dfrn_poll_content(App $a)
break;
default:
$appendix = (strstr($destination_url, '?') ? '&f=&redir=1' : '?f=&redir=1');
if (filter_var($url, FILTER_VALIDATE_URL)) {
System::externalRedirect($destination_url . $appendix);
} else {
$a->internalRedirect($destination_url . $appendix);
}
$a->redirect($destination_url . $appendix);
break;
}
// NOTREACHED

View file

@ -9,6 +9,7 @@ use Friendica\Database\DBA;
use Friendica\Model\Contact;
use Friendica\Model\Profile;
use Friendica\Util\Strings;
use Friendica\Util\Network;
function redir_init(App $a) {
@ -34,8 +35,7 @@ function redir_init(App $a) {
$contact_url = $contact['url'];
if ($contact['network'] !== Protocol::DFRN // Authentication isn't supported for non DFRN contacts.
|| (!local_user() && !remote_user()) // Visitors (not logged in or not remotes) can't authenticate.
if ((!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.
{
$a->redirect(defaults($url, $contact_url));
@ -81,6 +81,14 @@ function redir_init(App $a) {
}
}
// When the remote page does support OWA, then we enforce the use of it
$basepath = Contact::getBasepath($contact_url);
$serverret = Network::curl($basepath . '/magic');
if ($serverret->isSuccess()) {
$contact['issued-id'] = '';
$contact['dfrn-id'] = '';
}
// Doing remote auth with dfrn.
if (local_user() && (!empty($contact['dfrn-id']) || !empty($contact['issued-id'])) && empty($contact['pending'])) {
$dfrn_id = $orig_id = (($contact['issued-id']) ? $contact['issued-id'] : $contact['dfrn-id']);