Merge dbb02299ce
into fdb55c65f8
This commit is contained in:
commit
5876e798b9
|
@ -44,5 +44,15 @@ return [
|
|||
'url' => '/api/v1/token',
|
||||
'verb' => 'POST'
|
||||
],
|
||||
[
|
||||
'name' => 'OauthApi#discovery',
|
||||
'url' => '/.well-known/openid-configuration',
|
||||
'verb' => 'GET',
|
||||
],
|
||||
[
|
||||
'name' => 'OauthApi#getUserInfo',
|
||||
'url' => '/api/v1/userinfo',
|
||||
'verb' => 'GET'
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
|
@ -43,6 +43,9 @@ use OCP\AppFramework\Utility\ITimeFactory;
|
|||
use OCP\IRequest;
|
||||
use OCP\Security\ICrypto;
|
||||
use OCP\Security\ISecureRandom;
|
||||
use OCP\Util;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IUserSession;
|
||||
|
||||
class OauthApiController extends Controller {
|
||||
/** @var AccessTokenMapper */
|
||||
|
@ -59,6 +62,10 @@ class OauthApiController extends Controller {
|
|||
private $time;
|
||||
/** @var Throttler */
|
||||
private $throttler;
|
||||
/** @var IUserSession */
|
||||
private $userSession;
|
||||
/** @var IUrlGenerator */
|
||||
private $urlGenerator;
|
||||
|
||||
public function __construct(string $appName,
|
||||
IRequest $request,
|
||||
|
@ -68,7 +75,9 @@ class OauthApiController extends Controller {
|
|||
TokenProvider $tokenProvider,
|
||||
ISecureRandom $secureRandom,
|
||||
ITimeFactory $time,
|
||||
Throttler $throttler) {
|
||||
Throttler $throttler,
|
||||
IUserSession $userSession,
|
||||
IURLGenerator $urlGenerator) {
|
||||
parent::__construct($appName, $request);
|
||||
$this->crypto = $crypto;
|
||||
$this->accessTokenMapper = $accessTokenMapper;
|
||||
|
@ -77,6 +86,8 @@ class OauthApiController extends Controller {
|
|||
$this->secureRandom = $secureRandom;
|
||||
$this->time = $time;
|
||||
$this->throttler = $throttler;
|
||||
$this->userSession = $userSession;
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -178,4 +189,35 @@ class OauthApiController extends Controller {
|
|||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @PublicPage
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* @return JSONResponse
|
||||
*/
|
||||
public function discovery() {
|
||||
$util = new Util();
|
||||
return new JSONResponse([
|
||||
'issuer' => $this->urlGenerator->linkToRouteAbsolute(''),
|
||||
'authorization_endpoint' => $this->urlGenerator->linkToRouteAbsolute('oauth2.LoginRedirector.authorize'),
|
||||
'token_endpoint' => $this->urlGenerator->linkToRouteAbsolute('oauth2.OauthApi.getToken'),
|
||||
'userinfo_endpoint' => $this->urlGenerator->linkToRouteAbsolute('oauth2.OauthApi.getUserInfo')
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @PublicPage
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* @return JSONResponse
|
||||
*/
|
||||
public function getUserInfo() {
|
||||
$user = $this->userSession->getUser();
|
||||
return new JSONResponse([
|
||||
'sub' => $user->getUID(),
|
||||
'name' => $user->getDisplayName(),
|
||||
'email' => $user->getEMailAddress()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue