diff --git a/lib/web/auth/gitlab/index.js b/lib/web/auth/gitlab/index.js deleted file mode 100644 index 1b628e815..000000000 --- a/lib/web/auth/gitlab/index.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -const Router = require('express').Router -const passport = require('passport') -const GitlabStrategy = require('passport-gitlab2').Strategy -const config = require('../../../config') -const response = require('../../../response') -const { passportGeneralCallback } = require('../utils') - -let gitlabAuth = module.exports = Router() - -passport.use(new GitlabStrategy({ - baseURL: config.gitlab.baseURL, - clientID: config.gitlab.clientID, - clientSecret: config.gitlab.clientSecret, - scope: config.gitlab.scope, - callbackURL: config.serverURL + '/auth/gitlab/callback' -}, passportGeneralCallback)) - -gitlabAuth.get('/auth/gitlab', function (req, res, next) { - passport.authenticate('gitlab')(req, res, next) -}) - -// gitlab auth callback -gitlabAuth.get('/auth/gitlab/callback', - passport.authenticate('gitlab', { - successReturnToOrRedirect: config.serverURL + '/', - failureRedirect: config.serverURL + '/' - }) -) - -if (!config.gitlab.scope || config.gitlab.scope === 'api') { - // gitlab callback actions - gitlabAuth.get('/auth/gitlab/callback/:noteId/:action', response.gitlabActions) -} diff --git a/lib/web/auth/gitlab/index.ts b/lib/web/auth/gitlab/index.ts new file mode 100644 index 000000000..adeec8ebe --- /dev/null +++ b/lib/web/auth/gitlab/index.ts @@ -0,0 +1,41 @@ +import { Router } from 'express' +import passport from 'passport' +import { Strategy as GitlabStrategy } from 'passport-gitlab2' +import { config } from '../../../config' +import { response } from '../../../response' +import { AuthMiddleware } from '../interface' +import { passportGeneralCallback } from '../utils' + +export const GitlabMiddleware: AuthMiddleware = + { + getMiddleware (): Router { + const gitlabAuth = module.exports = Router() + + passport.use(new GitlabStrategy({ + baseURL: config.gitlab.baseURL, + clientID: config.gitlab.clientID, + clientSecret: config.gitlab.clientSecret, + scope: config.gitlab.scope, + callbackURL: config.serverURL + '/auth/gitlab/callback' + }, passportGeneralCallback)) + + gitlabAuth.get('/auth/gitlab', function (req, res, next) { + passport.authenticate('gitlab')(req, res, next) + }) + + // gitlab auth callback + gitlabAuth.get('/auth/gitlab/callback', + passport.authenticate('gitlab', { + successReturnToOrRedirect: config.serverURL + '/', + failureRedirect: config.serverURL + '/' + }) + ) + + if (!config.gitlab.scope || config.gitlab.scope === 'api' + ) { + // gitlab callback actions + gitlabAuth.get('/auth/gitlab/callback/:noteId/:action', response.gitlabActions) + } + return gitlabAuth + } + }