X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FDomainStatusNetwork%2FDomainStatusNetworkPlugin.php;h=0d0f74427722841a6045e7988b5c24d308ae2de5;hb=d318b5c10e557c447fc341747f72bf9cd73a6246;hp=9390a6e08353b3cdf441af4d9a3a5092251cbde2;hpb=b34e267e538499acc73ccf6bc22c6f4334e69757;p=quix0rs-gnu-social.git diff --git a/plugins/DomainStatusNetwork/DomainStatusNetworkPlugin.php b/plugins/DomainStatusNetwork/DomainStatusNetworkPlugin.php index 9390a6e083..0d0f744277 100644 --- a/plugins/DomainStatusNetwork/DomainStatusNetworkPlugin.php +++ b/plugins/DomainStatusNetwork/DomainStatusNetworkPlugin.php @@ -74,7 +74,7 @@ class DomainStatusNetworkPlugin extends Plugin } try { - $sn = Status_network::staticGet('nickname', $nickname); + $sn = Status_network::getKV('nickname', $nickname); } catch (Exception $e) { $this->log(LOG_ERR, $e->getMessage()); return; @@ -91,20 +91,6 @@ class DomainStatusNetworkPlugin extends Plugin } } - function onAutoload($cls) - { - $dir = dirname(__FILE__); - - switch ($cls) - { - case 'DomainStatusNetworkInstaller': - include_once $dir . '/' . strtolower($cls) . '.php'; - return false; - default: - return true; - } - } - static function toDomain($raw) { $parts = explode('@', $raw); @@ -127,17 +113,37 @@ class DomainStatusNetworkPlugin extends Plugin static function nicknameAvailable($nickname) { - $sn = Status_network::staticGet('nickname', $nickname); + $sn = Status_network::getKV('nickname', $nickname); if (!empty($sn)) { return false; } - $usn = Unavailable_status_network::staticGet('nickname', $nickname); + $usn = Unavailable_status_network::getKV('nickname', $nickname); if (!empty($usn)) { return false; } return true; } + function onRouterInitialized($m) + { + if (common_config('globalapi', 'enabled')) { + foreach (array('register', 'login', 'recover') as $method) { + $m->connect('api/statusnet/global/'.$method, + array('action' => 'global'.$method)); + } + } + return true; + } + + function onLoginAction($action, &$login) { + $this->debug($action); + if (in_array($action, array('globalregister', 'globallogin', 'globalrecover'))) { + $login = true; + return false; + } + return true; + } + static function nicknameForDomain($domain) { $registered = self::registeredDomain($domain); @@ -176,7 +182,7 @@ class DomainStatusNetworkPlugin extends Plugin $snt = Status_network_tag::withTag('domain='.$domain); while ($snt->fetch()) { - $sn = Status_network::staticGet('site_id', $snt->site_id); + $sn = Status_network::getKV('site_id', $snt->site_id); if (!empty($sn)) { return $sn; } @@ -187,7 +193,7 @@ class DomainStatusNetworkPlugin extends Plugin function onPluginVersion(&$versions) { $versions[] = array('name' => 'DomainStatusNetwork', - 'version' => STATUSNET_VERSION, + 'version' => GNUSOCIAL_VERSION, 'author' => 'Evan Prodromou', 'homepage' => 'http://status.net/wiki/Plugin:DomainStatusNetwork', 'rawdescription' => @@ -195,6 +201,107 @@ class DomainStatusNetworkPlugin extends Plugin _m('A plugin that maps a single status_network to an email domain.')); return true; } + + static function userExists($email) + { + $domain = self::toDomain($email); + + $sn = self::siteForDomain($domain); + + if (empty($sn)) { + return false; + } + + StatusNet::switchSite($sn->nickname); + + $user = User::getKV('email', $email); + + return !empty($user); + } + + static function registerEmail($email) + { + $domain = self::toDomain($email); + + if (FreeEmail::isFree($domain)) { + throw new ClientException(_("Use your work email.")); + } + + $sn = self::siteForDomain($domain); + + if (empty($sn)) { + $installer = new DomainStatusNetworkInstaller($domain); + + // Do the thing + $installer->main(); + + $sn = $installer->getStatusNetwork(); + + $config = $installer->getConfig(); + + Status_network::$wildcard = $config['WILDCARD']; + } + + StatusNet::switchSite($sn->nickname); + + $confirm = EmailRegistrationPlugin::registerEmail($email); + + return $confirm; + } + + static function login($email, $password) + { + $domain = self::toDomain($email); + + $sn = self::siteForDomain($domain); + + if (empty($sn)) { + throw new ClientException(_("No such site.")); + } + + StatusNet::switchSite($sn->nickname); + + $user = common_check_user($email, $password); + + if (empty($user)) { + // TRANS: Form validation error displayed when trying to log in with incorrect credentials. + throw new ClientException(_('Incorrect username or password.')); + } + + $loginToken = Login_token::makeNew($user); + + if (empty($loginToken)) { + throw new ServerException(sprintf(_('Could not create new login token for user %s'), $user->nickname)); + } + + $url = common_local_url('otp', array('user_id' => $loginToken->user_id, + 'token' => $loginToken->token)); + + if (empty($url)) { + throw new ServerException(sprintf(_('Could not create new OTP URL for user %s'), $user->nickname)); + } + + return $url; + } + + static function recoverPassword($email) + { + $domain = self::toDomain($email); + + $sn = self::siteForDomain($domain); + + if (empty($sn)) { + throw new NoSuchUserException(array('email' => $email)); + } + + StatusNet::switchSite($sn->nickname); + + $user = User::getKV('email', $email); + + if (empty($user)) { + throw new ClientException(_('No such user.')); + } + } } // The way addPlugin() works, this global variable gets disappeared.