2023-09-29 09:16:43 +08:00
|
|
|
<?php
|
|
|
|
|
2023-09-29 14:49:12 +08:00
|
|
|
/*
|
|
|
|
* This file is part of foskym/flarum-oauth-center.
|
|
|
|
*
|
|
|
|
* Copyright (c) 2023 FoskyM.
|
|
|
|
*
|
|
|
|
* For the full copyright and license information, please view the LICENSE.md
|
|
|
|
* file that was distributed with this source code.
|
|
|
|
*/
|
2024-03-09 23:23:39 +08:00
|
|
|
namespace RhodesIsland\OAuthCenter;
|
2023-09-29 09:16:43 +08:00
|
|
|
|
|
|
|
use OAuth2\Server;
|
|
|
|
use OAuth2\Response;
|
|
|
|
use OAuth2\Request;
|
|
|
|
|
|
|
|
use OAuth2\GrantType\ClientCredentials;
|
|
|
|
use OAuth2\GrantType\AuthorizationCode;
|
|
|
|
use OAuth2\GrantType\UserCredentials;
|
|
|
|
use OAuth2\GrantType\RefreshToken;
|
2023-09-29 20:50:11 +08:00
|
|
|
|
|
|
|
use Flarum\Settings\SettingsRepositoryInterface;
|
2023-09-29 09:16:43 +08:00
|
|
|
class OAuth
|
|
|
|
{
|
2023-09-29 20:50:11 +08:00
|
|
|
protected $settings;
|
|
|
|
|
|
|
|
public function __construct(SettingsRepositoryInterface $settings)
|
|
|
|
{
|
|
|
|
$this->settings = $settings;
|
|
|
|
}
|
2023-09-29 09:16:43 +08:00
|
|
|
public function response(): Response
|
|
|
|
{
|
|
|
|
return new Response;
|
|
|
|
}
|
|
|
|
public function request(): Request
|
|
|
|
{
|
|
|
|
return new Request;
|
|
|
|
}
|
2023-10-02 05:30:13 +08:00
|
|
|
|
|
|
|
public function storage(): Storage
|
|
|
|
{
|
|
|
|
return new Storage;
|
|
|
|
}
|
2023-09-29 09:16:43 +08:00
|
|
|
public function server(): Server
|
|
|
|
{
|
|
|
|
$storage = new Storage;
|
|
|
|
$server = new Server($storage, array(
|
2024-02-25 04:55:37 +08:00
|
|
|
'allow_implicit' => $this->settings->get('rhodes-island-oauth-center.allow_implicit') == "1",
|
|
|
|
'enforce_state' => $this->settings->get('rhodes-island-oauth-center.enforce_state') == "1",
|
|
|
|
'require_exact_redirect_uri' => $this->settings->get('rhodes-island-oauth-center.require_exact_redirect_uri') == "1",
|
|
|
|
'access_lifetime' => $this->settings->get('rhodes-island-oauth-center.access_lifetime') == "" ? 3600 : $this->settings->get('rhodes-island-oauth-center.access_lifetime'),
|
2023-09-29 09:16:43 +08:00
|
|
|
));
|
|
|
|
$server->addGrantType(new AuthorizationCode($storage));
|
|
|
|
$server->addGrantType(new ClientCredentials($storage));
|
|
|
|
$server->addGrantType(new UserCredentials($storage));
|
|
|
|
$server->addGrantType(new RefreshToken($storage));
|
|
|
|
return $server;
|
|
|
|
}
|
|
|
|
}
|