From 83ef1de7927991a1f221a74155e001087d16b81b Mon Sep 17 00:00:00 2001 From: Yannick Bungers Date: Mon, 13 Apr 2020 13:51:49 +0200 Subject: [PATCH] Refactored OpenID to typescript Added OpenID in auth Signed-off-by: Yannick Bungers Signed-off-by: David Mehren --- lib/web/auth/index.ts | 4 +-- lib/web/auth/openid/index.js | 59 ------------------------------------ lib/web/auth/openid/index.ts | 59 ++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 61 deletions(-) delete mode 100644 lib/web/auth/openid/index.js create mode 100644 lib/web/auth/openid/index.ts diff --git a/lib/web/auth/index.ts b/lib/web/auth/index.ts index 375292173..ed804f652 100644 --- a/lib/web/auth/index.ts +++ b/lib/web/auth/index.ts @@ -13,7 +13,7 @@ import { LdapMiddleware } from './ldap' import { SamlMiddleware } from './saml' import oauth2 from './oauth2' import { EmailMiddleware } from './email' -import openid from './openid' +import {OPenIDMiddleware } from './openid' const AuthRouter = Router() @@ -53,7 +53,7 @@ if (config.isLDAPEnable) AuthRouter.use(LdapMiddleware.getMiddleware()) if (config.isSAMLEnable) AuthRouter.use(SamlMiddleware.getMiddleware()) if (config.isOAuth2Enable) AuthRouter.use(oauth2) if (config.isEmailEnable) AuthRouter.use(EmailMiddleware.getMiddleware()) -if (config.isOpenIDEnable) AuthRouter.use(openid) +if (config.isOpenIDEnable) AuthRouter.use(OPenIDMiddleware.getMiddleware()) // logout AuthRouter.get('/logout', function (req: Request, res: Response) { diff --git a/lib/web/auth/openid/index.js b/lib/web/auth/openid/index.js deleted file mode 100644 index 28e164f55..000000000 --- a/lib/web/auth/openid/index.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict' - -const Router = require('express').Router -const passport = require('passport') -const OpenIDStrategy = require('@passport-next/passport-openid').Strategy -const config = require('../../../config') -const models = require('../../../models') -const logger = require('../../../logger') -const { urlencodedParser } = require('../../utils') - -let openIDAuth = module.exports = Router() - -passport.use(new OpenIDStrategy({ - returnURL: config.serverURL + '/auth/openid/callback', - realm: config.serverURL, - profile: true -}, function (openid, profile, done) { - var stringifiedProfile = JSON.stringify(profile) - models.User.findOrCreate({ - where: { - profileid: openid - }, - defaults: { - profile: stringifiedProfile - } - }).spread(function (user, created) { - if (user) { - var needSave = false - if (user.profile !== stringifiedProfile) { - user.profile = stringifiedProfile - needSave = true - } - if (needSave) { - user.save().then(function () { - logger.debug(`user login: ${user.id}`) - return done(null, user) - }) - } else { - logger.debug(`user login: ${user.id}`) - return done(null, user) - } - } - }).catch(function (err) { - logger.error('auth callback failed: ' + err) - return done(err, null) - }) -})) - -openIDAuth.post('/auth/openid', urlencodedParser, function (req, res, next) { - passport.authenticate('openid')(req, res, next) -}) - -// openID auth callback -openIDAuth.get('/auth/openid/callback', - passport.authenticate('openid', { - successReturnToOrRedirect: config.serverURL + '/', - failureRedirect: config.serverURL + '/' - }) -) diff --git a/lib/web/auth/openid/index.ts b/lib/web/auth/openid/index.ts new file mode 100644 index 000000000..ebf7a5b70 --- /dev/null +++ b/lib/web/auth/openid/index.ts @@ -0,0 +1,59 @@ +import { Router } from 'express' +import passport from 'passport' +import * as OpenID from '@passport-next/passport-openid' +import { config } from '../../../config' +import { User } from '../../../models' +import { logger } from '../../../logger' +import { urlencodedParser } from '../../utils' +import { AuthMiddleware } from '../interface' + +const openIDAuth = Router() +export const OPenIDMiddleware: AuthMiddleware = { + getMiddleware (): Router { + passport.use(new OpenID.Strategy({ + returnURL: config.serverURL + '/auth/openid/callback', + realm: config.serverURL, + profile: true + }, function (openid, profile, done) { + const stringifiedProfile = JSON.stringify(profile) + User.findOrCreate({ + where: { + profileid: openid + }, + defaults: { + profile: stringifiedProfile + } + }).then(function ([user, _]) { + if (user) { + let needSave = false + if (user.profile !== stringifiedProfile) { + user.profile = stringifiedProfile + needSave = true + } + if (needSave) { + user.save().then(function () { + logger.debug(`user login: ${user.id}`) + return done(null, user) + }) + } else { + logger.debug(`user login: ${user.id}`) + return done(null, user) + } + } + }).catch(function (err) { + logger.error('auth callback failed: ' + err) + return done(err, null) + }) + })) + openIDAuth.post('/auth/openid', urlencodedParser, function (req, res, next) { + passport.authenticate('openid')(req, res, next) + }) + openIDAuth.get('/auth/openid/callback', + passport.authenticate('openid', { + successReturnToOrRedirect: config.serverURL + '/', + failureRedirect: config.serverURL + '/' + }) + ) + return openIDAuth + } +}