From 21d9e1aea676d2d208cc5d2b9a50cc1be4cf2acf Mon Sep 17 00:00:00 2001 From: Red Bot Date: Thu, 24 Sep 2020 21:29:59 -0500 Subject: [PATCH] Creates and returns a unique Xenforo API key for user after authentication at index.php?users//api --- Controller/User.php | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Controller/User.php b/Controller/User.php index a3d6e54d..6e1fa420 100644 --- a/Controller/User.php +++ b/Controller/User.php @@ -25,6 +25,39 @@ class User extends AbstractController { + public function actionPostApi(ParameterBag $params) { + + $apiKey = $this->em()->findOne("XF:ApiKey", ['user_id' => $params->user_id]); + if (!$apiKey) { + $apiKey = $this->em()->create('XF:ApiKey'); + } + $user = $this->em()->find("XF:User", $params->user_id); + $keyScopes = [ + 'user:read', + 'thread:read', + 'resource:read', + 'node:read', + 'resource_category:read', + 'resource_rating:read', + 'profile_post:read', + 'attachment:read', + ]; + + $keyManager = $this->service('XF:ApiKey\Manager', $apiKey); + $keyManager->setTitle('Launcher Key: ' . $user->username); + $keyManager->setActive(true); + $keyManager->setScopes(false, $keyScopes); + $keyManager->setKeyType('user', $user->username); + $keyManager->save(); + + $key = $keyManager->getKey(); + $data = [ + 'api_key' => $key->api_key, + 'active' => $key->active + ]; + + return $this->api($data); + } /** * @param ParameterBag $params * @return \Xfrocks\Api\Mvc\Reply\Api