- $sec = random_string();
-
- q("INSERT INTO `profile_check` ( `uid`, `cid`, `dfrn_id`, `sec`, `expire`)
- VALUES( %d, %s, '%s', '%s', %d )",
- intval(local_user()),
- intval($cid),
- dbesc($dfrn_id),
- dbesc($sec),
- intval(time() + 45)
- );
-
- logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
- $dest = (($url) ? '&destination_url=' . $url : '');
- goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
- . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest . $quiet );
+ // Doing remote auth with dfrn.
+ if (local_user() && !$use_magic && (!empty($contact['dfrn-id']) || !empty($contact['issued-id'])) && empty($contact['pending'])) {
+ $dfrn_id = $orig_id = (($contact['issued-id']) ? $contact['issued-id'] : $contact['dfrn-id']);
+
+ if ($contact['duplex'] && $contact['issued-id']) {
+ $orig_id = $contact['issued-id'];
+ $dfrn_id = '1:' . $orig_id;
+ }
+ if ($contact['duplex'] && $contact['dfrn-id']) {
+ $orig_id = $contact['dfrn-id'];
+ $dfrn_id = '0:' . $orig_id;
+ }
+
+ $sec = Strings::getRandomHex();
+
+ $fields = ['uid' => local_user(), 'cid' => $cid, 'dfrn_id' => $dfrn_id,
+ 'sec' => $sec, 'expire' => time() + 45];
+ DBA::insert('profile_check', $fields);
+
+ Logger::log('mod_redir: ' . $contact['name'] . ' ' . $sec, Logger::DEBUG);
+
+ $dest = (!empty($url) ? '&destination_url=' . $url : '');
+
+ System::externalRedirect($contact['poll'] . '?dfrn_id=' . $dfrn_id
+ . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest . $quiet);
+ }
+
+ $url = defaults($url, $contact_url);