UNPKG

nestjs-oauth2

Version:

NestJS OAuth2 Client

59 lines (58 loc) 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OAuthImplement = void 0; const oauth_1 = require("oauth"); class OAuthImplement { constructor(provider) { this.provider = provider; this.defaultRedirectUri = `${this.provider.redirectOrigin}/oauth/${this.provider.name}/callback`; } getOAuth2({ mode }) { if (mode === "authorize") { return new oauth_1.OAuth2(this.provider.clientId, this.provider.clientSecret, new URL(this.provider.authorizeUrl).origin, new URL(this.provider.authorizeUrl).pathname); } if (mode === "accessToken") { return new oauth_1.OAuth2(this.provider.clientId, this.provider.clientSecret, new URL(this.provider.accessTokenUrl).origin, "", new URL(this.provider.accessTokenUrl).pathname); } } getAuthorizeUrl({ state }) { return this.getOAuth2({ mode: "authorize" }).getAuthorizeUrl({ response_type: "code", redirect_uri: this.provider.redirectUri || this.defaultRedirectUri, state, scope: this.provider.scope || "", }); } getAccessToken({ code }) { return new Promise((resolve, reject) => { this.getOAuth2({ mode: "accessToken" }).getOAuthAccessToken(code, { grant_type: "authorization_code", redirect_uri: this.provider.redirectUri || this.defaultRedirectUri, }, (err, accessToken, refreshToken, results) => { if (err) { reject(err); } else { resolve(Object.assign({ accessToken, refreshToken, tokenType: results.token_type, expiresIn: results.expires_in }, results)); } }); }); } refreshAccessToken({ refreshToken, }) { return new Promise((resolve, reject) => { this.getOAuth2({ mode: "accessToken" }).getOAuthAccessToken(refreshToken, { grant_type: "refresh_token", }, (err, accessToken, refreshToken, results) => { if (err) { reject(err); } else { resolve(Object.assign({ accessToken, refreshToken, tokenType: results.token_type, expiresIn: results.expires_in }, results)); } }); }); } } exports.OAuthImplement = OAuthImplement;