diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts index 9f6f131a11c0291555018ea8cfad65e35cf6e44b..8d4068b28192d622b55319ea22a0f0b53157afad 100644 --- a/ExpressAPI/src/helpers/GlobalHelper.ts +++ b/ExpressAPI/src/helpers/GlobalHelper.ts @@ -1,17 +1,13 @@ -import express from 'express'; -import logger from '../shared/logging/WinstonLogger'; -import GitlabManager from '../managers/GitlabManager'; -import { AxiosError } from 'axios'; -import { StatusCodes } from 'http-status-codes'; -import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; -import SharedGitlabManager from '../shared/managers/SharedGitlabManager'; -import Config from '../config/Config'; -import * as Gitlab from '@gitbeaker/rest'; +import express from 'express'; +import logger from '../shared/logging/WinstonLogger'; +import GitlabManager from '../managers/GitlabManager'; +import { AxiosError } from 'axios'; +import { StatusCodes } from 'http-status-codes'; +import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; +import * as Gitlab from '@gitbeaker/rest'; class GlobalHelper { - readonly sharedGitlabManager = new SharedGitlabManager(Config.gitlab.account.token); - async repositoryCreationError(message: string, error: unknown, req: express.Request, res: express.Response, gitlabError: DojoStatusCode, internalError: DojoStatusCode, repositoryToRemove?: Gitlab.ProjectSchema): Promise<void> { logger.error(message); logger.error(error); diff --git a/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts b/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts index 15d6cb8f4c583a10e083d2a0dc3ffaf2f634633b..af63f05ed484cf5de6bd45421f484627a6845e63 100644 --- a/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts +++ b/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts @@ -1,7 +1,7 @@ import { Prisma, UserRole } from '@prisma/client'; import LazyVal from '../../../shared/helpers/LazyVal'; import * as Gitlab from '@gitbeaker/rest'; -import GlobalHelper from '../../GlobalHelper'; +import GitlabManager from '../../../managers/GitlabManager'; export default Prisma.defineExtension(client => { @@ -26,7 +26,7 @@ export default Prisma.defineExtension(client => { }, gitlabProfile : { compute(user) { - return new LazyVal<Gitlab.UserSchema | undefined>(() => GlobalHelper.sharedGitlabManager.getUserById(user.id)); + return new LazyVal<Gitlab.UserSchema | undefined>(() => GitlabManager.getUserById(user.id)); } } } diff --git a/ExpressAPI/src/managers/GitlabManager.ts b/ExpressAPI/src/managers/GitlabManager.ts index f5e45ad18ccf37302e43b5de47bfa295bd4cc28e..7f4ff711221842819321a8b5b164c683d3567b50 100644 --- a/ExpressAPI/src/managers/GitlabManager.ts +++ b/ExpressAPI/src/managers/GitlabManager.ts @@ -6,21 +6,20 @@ import SharedConfig import { CommitSchema, ExpandedUserSchema, Gitlab, MemberSchema, ProjectBadgeSchema, ProjectSchema, ReleaseSchema, RepositoryFileExpandedSchema, RepositoryFileSchema, RepositoryTreeSchema } from '@gitbeaker/rest'; import logger from '../shared/logging/WinstonLogger'; import { AccessLevel, EditProjectOptions, ProjectVariableSchema, ProtectedBranchAccessLevel, ProtectedBranchSchema } from '@gitbeaker/core'; -import GlobalHelper from '../helpers/GlobalHelper'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; +import SharedGitlabManager from '../shared/managers/SharedGitlabManager'; -class GitlabManager { - private readonly api = new Gitlab({ - host : SharedConfig.gitlab.URL, - token: Config.gitlab.account.token - }); +class GitlabManager extends SharedGitlabManager { + constructor() { + super(Config.gitlab.account.token); + } public async getUserProfile(token: string): Promise<ExpandedUserSchema | undefined> { try { const profileApi = new Gitlab({ - host : SharedConfig.gitlab.URL, - token: token + host : SharedConfig.gitlab.URL, + oauthToken: token }); return await profileApi.Users.showCurrentUser(); @@ -108,7 +107,7 @@ class GitlabManager { async checkTemplateAccess(projectIdOrNamespace: string, req: express.Request, res?: express.Response): Promise<boolean> { // Get the Gitlab project and check if it have public or internal visibility try { - const project: ProjectSchema = await GlobalHelper.sharedGitlabManager.getRepository(projectIdOrNamespace); + const project: ProjectSchema = await this.getRepository(projectIdOrNamespace); if ( [ 'public', 'internal' ].includes(project.visibility) ) { req.session.sendResponse(res, StatusCodes.OK); diff --git a/ExpressAPI/src/routes/SessionRoutes.ts b/ExpressAPI/src/routes/SessionRoutes.ts index e1b1a24b2f13b7de5d2aba56c7a7426395fe92a4..b4f223e664ed675c40f2648a96ca4e42daf8d610 100644 --- a/ExpressAPI/src/routes/SessionRoutes.ts +++ b/ExpressAPI/src/routes/SessionRoutes.ts @@ -9,7 +9,6 @@ import GitlabManager from '../managers/GitlabManager'; import UserManager from '../managers/UserManager'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; import Config from '../config/Config'; -import GlobalHelper from '../helpers/GlobalHelper'; class SessionRoutes implements RoutesManager { @@ -64,7 +63,7 @@ class SessionRoutes implements RoutesManager { refreshToken: string } = req.body; - const gitlabTokens = await GlobalHelper.sharedGitlabManager.getTokens(params.refreshToken, true, Config.login.gitlab.client.secret); + const gitlabTokens = await GitlabManager.getTokens(params.refreshToken, true, Config.login.gitlab.client.secret); req.session.sendResponse(res, StatusCodes.OK, gitlabTokens); } catch ( error ) {