- if (remote_user()) {
- $host = substr($a->getBaseURL() . ($a->getURLPath() ? '/' . $a->getURLPath() : ''), strpos($a->getBaseURL(), '://') + 3);
- $remotehost = substr($contact['addr'], strpos($contact['addr'], '@') + 1);
-
- // On a local instance we have to check if the local user has already authenticated
- // with the local contact. Otherwise the local user would ask the local contact
- // for authentification everytime he/she is visiting a profile page of the local
- // contact.
- if ($host == $remotehost
- && !empty($_SESSION['remote'])
- && is_array($_SESSION['remote']))
- {
- foreach ($_SESSION['remote'] as $v) {
- if (!empty($v['uid']) && !empty($v['cid']) &&
- $v['uid'] == Session::get('visitor_visiting') &&
- $v['cid'] == Session::get('visitor_id')) {
- // Remote user is already authenticated.
- $target_url = defaults($url, $contact_url);
- Logger::log($contact['name'] . " is already authenticated. Redirecting to " . $target_url, Logger::DEBUG);
- $a->redirect($target_url);
- }
- }
- }
- }
+ if ($contact['uid'] == 0 && local_user()) {
+ // Let's have a look if there is an established connection
+ // between the public contact we have found and the local user.
+ $contact = DBA::selectFirst('contact', $fields, ['nurl' => $contact['nurl'], 'uid' => local_user()]);