1
0
Fork 0
mirror of synced 2024-07-04 14:01:27 +12:00

Self hosted SSO flow and account deletion

This commit is contained in:
Rory Powell 2021-09-21 12:27:53 +01:00
parent d757134445
commit 29295e6d36
4 changed files with 14 additions and 2 deletions

View file

@ -12,6 +12,7 @@ const {
auditLog, auditLog,
tenancy, tenancy,
appTenancy, appTenancy,
authError,
} = require("./middleware") } = require("./middleware")
const { setDB } = require("./db") const { setDB } = require("./db")
const userCache = require("./cache/user") const userCache = require("./cache/user")
@ -60,6 +61,7 @@ module.exports = {
buildTenancyMiddleware: tenancy, buildTenancyMiddleware: tenancy,
buildAppTenancyMiddleware: appTenancy, buildAppTenancyMiddleware: appTenancy,
auditLog, auditLog,
authError,
}, },
cache: { cache: {
user: userCache, user: userCache,

View file

@ -2,6 +2,7 @@ const jwt = require("./passport/jwt")
const local = require("./passport/local") const local = require("./passport/local")
const google = require("./passport/google") const google = require("./passport/google")
const oidc = require("./passport/oidc") const oidc = require("./passport/oidc")
const { authError } = require("./passport/utils")
const authenticated = require("./authenticated") const authenticated = require("./authenticated")
const auditLog = require("./auditLog") const auditLog = require("./auditLog")
const tenancy = require("./tenancy") const tenancy = require("./tenancy")
@ -16,4 +17,5 @@ module.exports = {
auditLog, auditLog,
tenancy, tenancy,
appTenancy, appTenancy,
authError,
} }

View file

@ -27,7 +27,11 @@ async function authenticate(accessToken, refreshToken, profile, done) {
* from couchDB rather than environment variables, using this factory is necessary for dynamically configuring passport. * from couchDB rather than environment variables, using this factory is necessary for dynamically configuring passport.
* @returns Dynamically configured Passport Google Strategy * @returns Dynamically configured Passport Google Strategy
*/ */
exports.strategyFactory = async function (config, callbackUrl) { exports.strategyFactory = async function (
config,
callbackUrl,
verify = authenticate
) {
try { try {
const { clientID, clientSecret } = config const { clientID, clientSecret } = config
@ -43,7 +47,7 @@ exports.strategyFactory = async function (config, callbackUrl) {
clientSecret: config.clientSecret, clientSecret: config.clientSecret,
callbackURL: callbackUrl, callbackURL: callbackUrl,
}, },
authenticate verify
) )
} catch (err) { } catch (err) {
console.error(err) console.error(err)

View file

@ -30,6 +30,10 @@ exports.invalidateSessions = async (userId, sessionId = null) => {
sessions.push({ key: makeSessionID(userId, sessionId) }) sessions.push({ key: makeSessionID(userId, sessionId) })
} else { } else {
sessions = await getSessionsForUser(userId) sessions = await getSessionsForUser(userId)
sessions.forEach(
session =>
(session.key = makeSessionID(session.userId, session.sessionId))
)
} }
const client = await redis.getSessionClient() const client = await redis.getSessionClient()
const promises = [] const promises = []