From ce233a40ad00132bd64a84f9b41af1f86a7e2ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <git@minelli.me> Date: Mon, 18 Mar 2024 16:05:14 +0100 Subject: [PATCH] Remove direct references to SharedGitlabManager --- ExpressAPI/src/helpers/GlobalHelper.ts | 18 +++++++----------- .../Prisma/Extensions/UserResultExtension.ts | 4 ++-- ExpressAPI/src/managers/GitlabManager.ts | 17 ++++++++--------- ExpressAPI/src/routes/SessionRoutes.ts | 3 +-- 4 files changed, 18 insertions(+), 24 deletions(-) diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts index 9f6f131..8d4068b 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 15d6cb8..af63f05 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 f5e45ad..7f4ff71 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 e1b1a24..b4f223e 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 ) { -- GitLab