]> git.mxchange.org Git - friendica.git/commitdiff
Bugfixing redirects
authorPhilipp Holzer <admin@philipp.info>
Wed, 24 Oct 2018 18:16:14 +0000 (20:16 +0200)
committerPhilipp Holzer <admin@philipp.info>
Wed, 24 Oct 2018 18:18:46 +0000 (20:18 +0200)
- Adding App->redirect if both redirects are possible

mod/randprof.php
mod/redir.php
src/App.php
src/Module/Magic.php

index 055b3dcbe8650b9d86d725085045dea48e78b2ae..9377f88afa39c736d9c335a67418247a71e1d17f 100644 (file)
@@ -15,11 +15,7 @@ function randprof_init(App $a)
        if ($x) {
                $link = Contact::magicLink($x);
                // @TODO making the return of magicLink save to use either externalRedirect or internalRedirect
-               if (filter_var($link, FILTER_VALIDATE_URL)) {
-                       System::externalRedirect($link);
-               } else {
-                       $a->internalRedirect($link);
-               }
+               $a->redirect($link);
        }
 
        $a->internalRedirect('profile');
index ad42bc8abc18954052017e7dccb799a528a9d4ea..5ba8276ee7ca3adf7dbee4d26ae551b300b60f75 100644 (file)
@@ -36,7 +36,7 @@ function redir_init(App $a) {
                        || (!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.
                {
-                       System::externalRedirect(defaults($url, $contact_url));
+                       $a->redirect(defaults($url, $contact_url));
                }
 
                if ($contact['uid'] == 0 && local_user()) {
@@ -52,7 +52,7 @@ function redir_init(App $a) {
                                // Local user is already authenticated.
                                $target_url = defaults($url, $contact_url);
                                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.
                                                $target_url = defaults($url, $contact_url);
                                                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);
-               System::externalRedirect($url);
+               $a->redirect($url);
        }
 
        notice(L10n::t('Contact not found.'));
index f24a4cffa4fc946862499b5c3391384a6b628f93..a0558fedcd203148e3e1ec6a997b6862650bb208 100644 (file)
@@ -8,6 +8,7 @@ use Detection\MobileDetect;
 use DOMDocument;
 use DOMXPath;
 use Exception;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Network\HTTPException\InternalServerErrorException;
 
@@ -2006,4 +2007,21 @@ class App
                $redirectTo = $this->getBaseURL($ssl) . '/' . ltrim($toUrl, '/');
                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);
+               }
+       }
 }
index 1d7cb715e1c4e26eecd481a19afa782185102f25..1da03b9c10854696639a57270d234f2207c4ac7c 100644 (file)
@@ -43,11 +43,7 @@ class Magic extends BaseModule
                if (!$cid) {
                        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
-                       if (filter_var($dest, FILTER_VALIDATE_URL)) {
-                               System::externalRedirect($dest);
-                       } else {
-                               $a->internalRedirect($dest);
-                       }
+                       $a->redirect($dest);
                }
                $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
-               if (filter_var($dest, FILTER_VALIDATE_URL)) {
-                       System::externalRedirect($dest);
-               } else {
-                       $a->internalRedirect($dest);
-               }
+               $a->redirect($dest);
        }
 }