import { OAuth2AdapterModel, OAuth2Provider } from '@icynet/oauth2-provider'; import { Injectable } from '@nestjs/common'; import { OAuth2ClientService } from 'src/modules/objects/oauth2-client/oauth2-client.service'; import { OAuth2TokenService } from 'src/modules/objects/oauth2-token/oauth2-token.service'; import { UserService } from 'src/modules/objects/user/user.service'; import { TokenService } from 'src/modules/utility/services/token.service'; import { AccessTokenAdapter } from './adapter/access-token.adapter'; import { ClientAdapter } from './adapter/client.adapter'; import { CodeAdapter } from './adapter/code.adapter'; import { RefreshTokenAdapter } from './adapter/refresh-token.adapter'; import { UserAdapter } from './adapter/user.adapter'; @Injectable() export class OAuth2Service { private _oauthAdapter: OAuth2AdapterModel = { accessToken: new AccessTokenAdapter(this), refreshToken: new RefreshTokenAdapter(this), user: new UserAdapter(this), client: new ClientAdapter(this), code: new CodeAdapter(this), }; public oauth = new OAuth2Provider(this._oauthAdapter, async (req, res) => { res.render('authorize'); }); constructor( public token: TokenService, public userService: UserService, public clientService: OAuth2ClientService, public tokenService: OAuth2TokenService, ) { if (process.env.NODE_ENV === 'development') { this.oauth.logger.setLogLevel('debug'); } } public splitScope(scope: string): string[] { return scope.includes(',') ? scope.split(',').map((item) => item.trim()) : scope.split(' '); } }