/** * Deny password resets * * @param Member $member * @return boolean */ public function forgotPassword($member) { if (Config::inst()->get('OpauthMemberLoginFormExtension', 'allow_password_reset')) { return null; } $identity = OpauthIdentity::get()->find('MemberID', $member->ID); if (!$member->Password && $identity) { $this->owner->sessionMessage(_t('OpauthMemberLoginFormExtension.NoResetPassword', 'Can\'t reset password for accounts registered through {provider}', array('provider' => $identity->Provider)), 'bad'); return false; } else { return null; } }
/** * factory * Returns or creates a fresh OpauthIdentity. * @param array $oaResponse The response object from Opauth. * @return OpauthIdentity instance based on $oaResponse. */ public static function factory(array $oaResponse) { if (empty($oaResponse['auth'])) { throw new InvalidArgumentException('The auth key is required to continue.'); } if (empty($oaResponse['auth']['provider'])) { throw new InvalidArgumentException('Unable to determine provider.'); } $auth = $oaResponse['auth']; $do = OpauthIdentity::get()->filter(array('Provider' => $auth['provider'], 'UID' => $auth['uid']))->first(); if (!$do || !$do->exists()) { $do = new OpauthIdentity(); $do->Provider = $auth['provider']; $do->UID = $auth['uid']; } $do->setAuthSource($auth); return $do; }