Merge pull request #12673 from annando/andstatus-api

API: Accept "redirect_uris" as both array and string
This commit is contained in:
Philipp 2023-01-15 01:01:06 +01:00 committed by GitHub
commit d63aca97b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 112 additions and 100 deletions

View file

@ -31,6 +31,7 @@ use Psr\Http\Message\ResponseInterface;
/**
* Apps class to register new OAuth clients
* @see https://docs.joinmastodon.org/methods/apps/#create
*/
class Apps extends BaseApi
{
@ -44,6 +45,10 @@ class Apps extends BaseApi
*/
protected function post(array $request = [])
{
if (!empty($request['redirect_uris']) && is_array($request['redirect_uris'])) {
$request['redirect_uris'] = $request['redirect_uris'][0];
}
$request = $this->getRequest([
'client_name' => '',
'redirect_uris' => '',
@ -58,6 +63,10 @@ class Apps extends BaseApi
if (!empty($postrequest) && is_array($postrequest)) {
$request = array_merge($request, $postrequest);
}
if (!empty($request['redirect_uris']) && is_array($request['redirect_uris'])) {
$request['redirect_uris'] = $request['redirect_uris'][0];
}
}
if (empty($request['client_name']) || empty($request['redirect_uris'])) {

View file

@ -32,7 +32,7 @@ use Friendica\Util\DateTimeFormat;
use Psr\Http\Message\ResponseInterface;
/**
* @see https://docs.joinmastodon.org/spec/oauth/
* @see https://docs.joinmastodon.org/methods/oauth/#token
* @see https://aaronparecki.com/oauth-2-simplified/
*/
class Token extends BaseApi
@ -69,13 +69,13 @@ class Token extends BaseApi
}
if (empty($request['client_id']) || empty($request['client_secret'])) {
Logger::warning('Incomplete request data', ['request' => $_REQUEST]);
DI::mstdnError()->UnprocessableEntity(DI::l10n()->t('Incomplete request data'));
Logger::warning('Incomplete request data', ['request' => $request]);
DI::mstdnError()->Unauthorized('invalid_client', DI::l10n()->t('Incomplete request data'));
}
$application = OAuth::getApplication($request['client_id'], $request['client_secret'], $request['redirect_uri']);
if (empty($application)) {
DI::mstdnError()->UnprocessableEntity();
DI::mstdnError()->Unauthorized('invalid_client', DI::l10n()->t('Invalid data or unknown client'));
}
if ($request['grant_type'] == 'client_credentials') {