setReturnURL($url); $data = $consumer->completeAuthentication(); if (!$data || !$data['openid_identifier']) { register_error(elgg_echo('openid_client:error:bad_response')); forward(); } // does this user exist $users = elgg_get_entities_from_metadata(array( 'type' => 'user', 'subtype' => 'openid', 'metadata_name' => 'openid_identifier', 'metadata_value' => $data['openid_identifier'], )); if ($users) { // log in user and maybe update account (admin setting, user prompt?) $user = $users[0]; try { login($user); } catch (LoginException $e) { register_error($e->getMessage()); forward(); } system_message(elgg_echo('loginok')); forward(); } else { // register the new user $result = openid_client_registration_page_handler($data); if (!$result) { register_error(elgg_echo('openid_client:error:bad_register')); forward(); } }