1
0
Fork 0
mirror of synced 2024-07-03 13:30:46 +12:00
budibase/packages/auth/src/index.js

65 lines
1.4 KiB
JavaScript
Raw Normal View History

2021-04-07 22:33:16 +12:00
const passport = require("koa-passport")
const LocalStrategy = require("passport-local").Strategy
const JwtStrategy = require("passport-jwt").Strategy
const { StaticDatabases } = require("./db/utils")
const {
jwt,
local,
authenticated,
google,
oidc,
auditLog,
} = require("./middleware")
2021-08-04 21:02:24 +12:00
const { setDB, getDB } = require("./db")
2021-07-07 05:10:04 +12:00
const userCache = require("./cache/user")
2021-04-07 22:33:16 +12:00
// Strategies
passport.use(new LocalStrategy(local.options, local.authenticate))
passport.use(new JwtStrategy(jwt.options, jwt.authenticate))
passport.serializeUser((user, done) => done(null, user))
passport.deserializeUser(async (user, done) => {
2021-08-04 21:02:24 +12:00
const db = getDB(StaticDatabases.GLOBAL.name)
2021-04-07 22:33:16 +12:00
try {
const user = await db.get(user._id)
return done(null, user)
} catch (err) {
console.error("User not found", err)
return done(null, false, { message: "User not found" })
}
})
module.exports = {
init(pouch) {
setDB(pouch)
},
db: require("./db/utils"),
redis: {
Client: require("./redis"),
utils: require("./redis/utils"),
},
objectStore: {
...require("./objectStore"),
...require("./objectStore/utils"),
},
utils: {
...require("./utils"),
2021-04-22 03:46:51 +12:00
...require("./hashing"),
},
auth: {
buildAuthMiddleware: authenticated,
passport,
2021-04-23 02:27:09 +12:00
google,
2021-06-28 02:46:04 +12:00
oidc,
jwt: require("jsonwebtoken"),
2021-05-28 21:09:32 +12:00
auditLog,
},
2021-07-07 05:10:04 +12:00
cache: {
user: userCache,
},
2021-04-08 22:26:08 +12:00
StaticDatabases,
2021-04-23 02:27:09 +12:00
constants: require("./constants"),
}