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 } }