oauth2: Add OpenAPI spec

Signed-off-by: jld3103 <jld3103yt@gmail.com>
pull/39316/head
jld3103 2 years ago
parent 2cf8d6d965
commit 1c19c567fe
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 18
      apps/oauth2/lib/Controller/LoginRedirectorController.php
  2. 18
      apps/oauth2/lib/Controller/OauthApiController.php
  3. 2
      apps/oauth2/openapi.json

@ -8,6 +8,7 @@ declare(strict_types=1);
* @author Daniel Kesselberg <mail@danielkesselberg.de> * @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Lukas Reschke <lukas@statuscode.ch> * @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl> * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Kate Döen <kate.doeen@nextcloud.com>
* *
* @license GNU AGPL version 3 or any later version * @license GNU AGPL version 3 or any later version
* *
@ -30,8 +31,8 @@ namespace OCA\OAuth2\Controller;
use OCA\OAuth2\Db\ClientMapper; use OCA\OAuth2\Db\ClientMapper;
use OCA\OAuth2\Exceptions\ClientNotFoundException; use OCA\OAuth2\Exceptions\ClientNotFoundException;
use OCP\AppFramework\Controller; use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\RedirectResponse;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Http\TemplateResponse;
use OCP\IL10N; use OCP\IL10N;
use OCP\IRequest; use OCP\IRequest;
@ -74,14 +75,19 @@ class LoginRedirectorController extends Controller {
* @NoCSRFRequired * @NoCSRFRequired
* @UseSession * @UseSession
* *
* @param string $client_id * Authorize the user
* @param string $state *
* @param string $response_type * @param string $client_id Client ID
* @return Response * @param string $state State of the flow
* @param string $response_type Response type for the flow
* @return TemplateResponse<Http::STATUS_OK, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}>
*
* 200: Client not found
* 303: Redirect to login URL
*/ */
public function authorize($client_id, public function authorize($client_id,
$state, $state,
$response_type): Response { $response_type): TemplateResponse|RedirectResponse {
try { try {
$client = $this->clientMapper->getByIdentifier($client_id); $client = $this->clientMapper->getByIdentifier($client_id);
} catch (ClientNotFoundException $e) { } catch (ClientNotFoundException $e) {

@ -8,6 +8,7 @@ declare(strict_types=1);
* @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch> * @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl> * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Kate Döen <kate.doeen@nextcloud.com>
* *
* @license GNU AGPL version 3 or any later version * @license GNU AGPL version 3 or any later version
* *
@ -66,12 +67,17 @@ class OauthApiController extends Controller {
* @NoCSRFRequired * @NoCSRFRequired
* @BruteForceProtection(action=oauth2GetToken) * @BruteForceProtection(action=oauth2GetToken)
* *
* @param string $grant_type * Get a token
* @param string $code *
* @param string $refresh_token * @param string $grant_type Token type that should be granted
* @param string $client_id * @param string $code Code of the flow
* @param string $client_secret * @param string $refresh_token Refresh token
* @return JSONResponse * @param string $client_id Client ID
* @param string $client_secret Client secret
* @return JSONResponse<Http::STATUS_OK, array{access_token: string, token_type: string, expires_in: int, refresh_token: string, user_id: string}, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, array{error: string}, array{}>
*
* 200: Token returned
* 400: Getting token is not possible
*/ */
public function getToken($grant_type, $code, $refresh_token, $client_id, $client_secret): JSONResponse { public function getToken($grant_type, $code, $refresh_token, $client_id, $client_secret): JSONResponse {

@ -19,7 +19,7 @@
"scheme": "bearer" "scheme": "bearer"
} }
}, },
"schemas": [] "schemas": {}
}, },
"paths": { "paths": {
"/index.php/apps/oauth2/authorize": { "/index.php/apps/oauth2/authorize": {

Loading…
Cancel
Save