public function key_activation(array $options) { $this->cli->header('updating key activates'); $reg = King23_Registry::getInstance(); $pheal = new Pheal($reg->apimailreceiverApiUserID, $reg->apimailreceiverApiKey, 'char'); $messages = $pheal->MailMessages(array('characterID' => $reg->apimailreceiverCharacterID))->messages; foreach ($messages as $message) { if ($message->toCharacterIDs != $reg->apimailreceiverCharacterID) { continue; } $token = trim($message->title); if (strlen($token) != Kingboard_ApiActivationToken::TOKEN_LENGTH) { continue; } if (!($token = Kingboard_ApiActivationToken::findOneByToken($token))) { continue; } $user = Kingboard_User::getById($token['userid']); $keys = $user['keys']; $apiuserid = $token['apiuserid']; $phealactivate = new Pheal($keys[$apiuserid]['apiuserid'], $keys[$apiuserid]['apikey']); $characters = $phealactivate->Characters()->characters; foreach ($characters as $character) { if ($character->characterID == $message->senderID) { $keys[$apiuserid]['active'] = true; $user['keys'] = $keys; $user->save(); $token->delete(); $body = King23_Registry::getInstance()->sith->cachedGet('mails/activate_apikey.html')->render(array('username' => $user['username'], 'apiuserid' => $apiuserid), King23_Registry::getInstance()->sith); mail($user['username'], "Kingboard API Key Activation", $body); break; } } } }
public function myKingboard(array $parameters) { $user = Kingboard_Auth::getUser(); $activeKeys = false; $pendingKeys = false; $context = array(); if (isset($_POST['XSRF']) && Kingboard_Form::getXSRFToken() == $_POST['XSRF']) { try { $pheal = new Pheal($_POST['apiuserid'], $_POST['apikey']); $pheal->accountScope->AccountStatus(); if (!isset($user['keys'])) { $keys = array(); } else { $keys = $user['keys']; } // ensure to remove existing activation keys if this is an update if ($activationkey = Kingboard_ApiActivationToken::findOneByUseridAndApiUserid($user->_id, $_POST['apiuserid'])) { $activationkey->delete(); } $activationkey = Kingboard_ApiActivationToken::create($user->_id, $_POST['apiuserid']); $keys[$_POST['apiuserid']] = array('apiuserid' => $_POST['apiuserid'], 'apikey' => $_POST['apikey'], 'active' => false); $user['keys'] = $keys; $user->save(); // ensure user is refreshed in session Kingboard_Auth::getUser(); } catch (PhealApiException $e) { $context = $_POST; $context['error'] = "the key could not be validated as a full apikey"; } } elseif (isset($_POST['XSRF'])) { die('XSRF detected'); } if (isset($user['keys'])) { foreach ($user['keys'] as $key) { if ($key['active']) { if (!is_array($activeKeys)) { $activeKeys = array(); } $activeKeys[] = $key; } else { if (!is_array($pendingKeys)) { $pendingKeys = array(); } $key['activationkey'] = (string) Kingboard_ApiActivationToken::findOneByUseridAndApiUserid($user->_id, $key['apiuserid']); $pendingKeys[] = $key; } } } $charkeylist = array(); foreach ($activeKeys as $key) { $pheal = new Pheal($key['apiuserid'], $key['apikey']); $chars = $pheal->accountScope->Characters()->characters->toArray(); foreach ($chars as $char) { $charkeylist[$key['apiuserid'] . "|" . $char['characterID']] = $char['name']; } } $context = array_merge($context, array('active_keys' => $activeKeys, 'pending_keys' => $pendingKeys, 'apimailreceiver' => King23_Registry::getInstance()->apimailreceiver, 'active_characters' => $charkeylist)); $this->render('user/index.html', $context); }
public static function create($userid, $apiuserid) { $token = new Kingboard_ApiActivationToken(); $token['userid'] = $userid; $token['apiuserid'] = $apiuserid; // ensure this key isnt in use yet do { $keyset = "abcdefghijklmABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $randkey = ""; for ($i = 0; $i < Kingboard_ApiActivationToken::TOKEN_LENGTH; $i++) { $randkey .= substr($keyset, rand(0, strlen($keyset) - 1), 1); } } while (!is_null(Kingboard_ApiActivationToken::findOneByToken($randkey))); $token['token'] = $randkey; $token->save(); return $token; }