1
0
Fork 0
mirror of synced 2024-07-02 21:10:43 +12:00
budibase/packages/worker/src/api/controllers/auth.js

95 lines
1.8 KiB
JavaScript
Raw Normal View History

2021-04-21 23:12:22 +12:00
const {
passport,
Cookies,
StaticDatabases,
clearCookie,
} = require("@budibase/auth")
const CouchDB = require("../../db")
const GLOBAL_DB = StaticDatabases.GLOBAL.name
async function setToken(ctx) {
return async function(err, user) {
if (err) {
return ctx.throw(403, "Unauthorized")
}
const expires = new Date()
expires.setDate(expires.getDate() + 1)
if (!user) {
return ctx.throw(403, "Unauthorized")
}
ctx.cookies.set(Cookies.Auth, user.token, {
expires,
path: "/",
httpOnly: false,
overwrite: true,
})
delete user.token
ctx.body = { user }
}
}
exports.authenticate = async (ctx, next) => {
2021-04-08 02:15:05 +12:00
return passport.authenticate("local", async (err, user) => {
2021-04-07 22:33:16 +12:00
if (err) {
return ctx.throw(403, "Unauthorized")
2021-04-07 22:33:16 +12:00
}
2021-04-08 02:15:05 +12:00
const expires = new Date()
expires.setDate(expires.getDate() + 1)
2021-04-12 21:47:48 +12:00
if (!user) {
return ctx.throw(403, "Unauthorized")
2021-04-12 21:47:48 +12:00
}
2021-04-11 22:35:55 +12:00
ctx.cookies.set(Cookies.Auth, user.token, {
2021-04-08 02:15:05 +12:00
expires,
path: "/",
httpOnly: false,
overwrite: true,
})
2021-04-12 21:47:48 +12:00
delete user.token
ctx.body = { user }
})(ctx, next)
}
2021-04-11 22:35:55 +12:00
2021-04-14 00:56:28 +12:00
exports.logout = async ctx => {
clearCookie(ctx, Cookies.Auth)
2021-04-16 03:49:35 +12:00
ctx.body = { message: "User logged out" }
2021-04-14 00:56:28 +12:00
}
2021-04-21 23:12:22 +12:00
exports.googleAuth = async (ctx, next) => {
return passport.authenticate(
"google",
{ successRedirect: "/", failureRedirect: "/" },
async (err, user) => {
if (err) {
return ctx.throw(403, "Unauthorized")
}
const expires = new Date()
expires.setDate(expires.getDate() + 1)
2021-04-14 00:56:28 +12:00
2021-04-21 23:12:22 +12:00
if (!user) {
return ctx.throw(403, "Unauthorized")
}
ctx.cookies.set(Cookies.Auth, user.token, {
expires,
path: "/",
httpOnly: false,
overwrite: true,
})
ctx.redirect("/")
}
)(ctx, next)
2021-04-11 22:35:55 +12:00
}