40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { GenericOidcProvider, OidcToken } from "./genericOidc.provider";
|
|
import { Inject, Injectable } from "@nestjs/common";
|
|
import { ConfigService } from "../../config/config.service";
|
|
import { JwtService } from "@nestjs/jwt";
|
|
import { CACHE_MANAGER } from "@nestjs/cache-manager";
|
|
import { Cache } from "cache-manager";
|
|
import { OAuthCallbackDto } from "../dto/oauthCallback.dto";
|
|
import { OAuthSignInDto } from "../dto/oauthSignIn.dto";
|
|
import { OAuthToken } from "./oauthProvider.interface";
|
|
|
|
@Injectable()
|
|
export class OidcProvider extends GenericOidcProvider {
|
|
constructor(
|
|
config: ConfigService,
|
|
jwtService: JwtService,
|
|
@Inject(CACHE_MANAGER) protected cache: Cache,
|
|
) {
|
|
super(
|
|
"oidc",
|
|
["oauth.oidc-enabled", "oauth.oidc-discoveryUri"],
|
|
config,
|
|
jwtService,
|
|
cache,
|
|
);
|
|
}
|
|
|
|
protected getDiscoveryUri(): string {
|
|
return this.config.get("oauth.oidc-discoveryUri");
|
|
}
|
|
|
|
getUserInfo(
|
|
token: OAuthToken<OidcToken>,
|
|
query: OAuthCallbackDto,
|
|
_?: string,
|
|
): Promise<OAuthSignInDto> {
|
|
const claim = this.config.get("oauth.oidc-usernameClaim") || undefined;
|
|
return super.getUserInfo(token, query, claim);
|
|
}
|
|
}
|