diff options
| author | julian laplace <julescarbon@gmail.com> | 2022-10-25 23:26:31 +0200 |
|---|---|---|
| committer | julian laplace <julescarbon@gmail.com> | 2022-10-25 23:26:31 +0200 |
| commit | 1cfed2612fd1042a15d470a44ec87588c966dc12 (patch) | |
| tree | ba850f589194a21fd1587dd71dfcd056a242e4ac /bucky/util/auth.js | |
| parent | ae311b71cccf5df9e0e19e276615cc32426d9de1 (diff) | |
hootstream... dark mode only
Diffstat (limited to 'bucky/util/auth.js')
| -rw-r--r-- | bucky/util/auth.js | 250 |
1 files changed, 128 insertions, 122 deletions
diff --git a/bucky/util/auth.js b/bucky/util/auth.js index d457704..2ca1b94 100644 --- a/bucky/util/auth.js +++ b/bucky/util/auth.js @@ -1,65 +1,61 @@ -var passport = require('passport') -var LocalStrategy = require('passport-local').Strategy -var crypto = require('crypto') -var crypt = require('unix-crypt-td-js') -var fs = require('fs') -var db = require('../db') -var util = require('./util') -var upload = require('./upload') +var passport = require("passport"); +var LocalStrategy = require("passport-local").Strategy; +var crypto = require("crypto"); +var crypt = require("unix-crypt-td-js"); +var fs = require("fs"); +var db = require("../db"); +var util = require("./util"); +var upload = require("./upload"); -var middleware = require('./middleware') +var middleware = require("./middleware"); -var auth = module.exports = { - - init: function(){ - passport.serializeUser(auth.serializeUser) - passport.deserializeUser(auth.deserializeUser) - passport.use(new LocalStrategy(auth.verifyLocalUser)) +var auth = (module.exports = { + init: function () { + passport.serializeUser(auth.serializeUser); + passport.deserializeUser(auth.deserializeUser); + passport.use(new LocalStrategy(auth.verifyLocalUser)); }, - route: function(app){ - app.get("/login", - function(req, res){ - res.render("pages/login", { - title: "login" - }) - }) - app.get("/signup", function(req, res){ + route: function (app) { + app.get("/login", function (req, res) { + res.render("pages/login", { + title: "login", + }); + }); + app.get("/signup", function (req, res) { res.render("pages/signup", { - title: "signup" - }) - }) - app.get("/logout", auth.logout) + title: "signup", + }); + }); + app.get("/logout", auth.logout); - app.put("/api/signup", + app.put( + "/api/signup", auth.checkIfUserExists, auth.createUser, passport.authenticate("local"), auth.createMailboxes, auth.uploadDefaultAvatar, - auth.login) - app.put("/api/login", - passport.authenticate("local"), - auth.login) - app.put("/api/checkin", - middleware.ensureAuthenticated, - auth.checkin - ) - }, + auth.login + ); + app.put("/api/login", passport.authenticate("local"), auth.login); + app.put("/api/checkin", middleware.ensureAuthenticated, auth.checkin); + }, checkIfUserExists: function (req, res, next) { - var username = util.sanitizeName(req.body.username) + var username = util.sanitizeName(req.body.username); db.getUserByUsername(username).then((user) => { if (user) { - return res.json({ error: "user exists" }) + console.log(user); + return res.json({ error: "user exists" }); } - next() - }) + next(); + }); }, createUser: function (req, res, next) { if (req.body.password !== req.body.password2) { - return res.json({ error: "passwords don't match" }) + return res.json({ error: "passwords don't match" }); } - var username = util.sanitizeName(req.body.username) + var username = util.sanitizeName(req.body.username); var data = { username: username, realname: util.sanitize(req.body.realname), @@ -68,137 +64,147 @@ var auth = module.exports = { firstseen: util.now(), lastseen: util.now(), // lastsession: util.now(), - } - db.createUser(data).then(() => next()) + }; + db.createUser(data).then(() => next()); }, createMailboxes: function (req, res, next) { - var username = req.user.get('username') + var username = req.user.get("username"); Promise.all([ db.createMailbox({ - mbox: username + '.inbox', + mbox: username + ".inbox", owner: username, editable: 0, }), db.createMailbox({ - mbox: username + '.outbox', + mbox: username + ".outbox", owner: username, editable: 0, }), db.createMailbox({ - mbox: username + '.drafts', + mbox: username + ".drafts", owner: username, editable: 1, }), - ]).then(() => next()) + ]).then(() => next()); }, - uploadDefaultAvatar: function(req, res, next){ - fs.readFile('public/assets/img/profile.jpg', (err, buf) => { + uploadDefaultAvatar: function (req, res, next) { + fs.readFile("public/assets/img/profile.jpg", (err, buf) => { if (err) throw err; - var username = req.user.get('username') + var username = req.user.get("username"); upload.put({ - file: { - buffer: buf, - size: buf.length, - mimetype: 'image/jpeg', - }, - dirname: '/bucky/profile/', - filename: username + '.jpg', - preserveFilename: true, - success: (url) => { - next() - }, - }) + file: { + buffer: buf, + size: buf.length, + mimetype: "image/jpeg", + }, + dirname: "/bucky/profile/", + filename: username + ".jpg", + preserveFilename: true, + success: (url) => { + next(); + }, + }); }); }, login: function (req, res) { if (req.isAuthenticated()) { - var returnTo = req.session.returnTo - delete req.session.returnTo - console.log(">> logged in", req.user.get('username')) + var returnTo = req.session.returnTo; + delete req.session.returnTo; + console.log(">> logged in", req.user.get("username")); return res.json({ status: "OK", user: util.sanitizeUser(req.user), returnTo: returnTo || "/index", - }) + }); } res.json({ - error: 'bad credentials', - }) + error: "bad credentials", + }); }, - serializeUser: function (user, done) { - done(null, user.id); - }, + serializeUser: function (user, done) { + done(null, user.id); + }, - deserializeUser: function (id, done) { - db.getUser(id).then(function(user){ - done(! user, user) - }) - }, + deserializeUser: function (id, done) { + db.getUser(id).then(function (user) { + done(!user, user); + }); + }, - makePassword: function(username, password) { - var salt = username.substr(0, 2) // lol - return crypt(password, salt) + makePassword: function (username, password) { + var salt = username.substr(0, 2); // lol + return crypt(password, salt); // var shasum = crypto.createHash('sha1') // shasum.update(password) // return shasum.digest('hex'); - }, + }, - validPassword: function(user, password){ - return user.get('password') === auth.makePassword(user.get('username'), password); + validPassword: function (user, password) { + return ( + user.get("password") === auth.makePassword(user.get("username"), password) + ); }, - changePassword: function(req, res, next) { - if (! req.body.oldpassword && ! req.body.newpassword) return next() + changePassword: function (req, res, next) { + if (!req.body.oldpassword && !req.body.newpassword) return next(); if (req.body.newpassword !== req.body.newpassword2) { - return res.send({ error: 'Passwords don\'t match.' }) + return res.send({ error: "Passwords don't match." }); } - if (! auth.validPassword(res.user, req.body.oldpassword)) { - return res.send({ error: 'Password is incorrect.' }) + if (!auth.validPassword(res.user, req.body.oldpassword)) { + return res.send({ error: "Password is incorrect." }); } - var username = req.user.get('username') - var newPassword = auth.makePassword(username, req.body.newpassword) - res.user.set('password', newPassword) - res.user.save().then(() => next()).catch(err => res.send({ error: err })) + var username = req.user.get("username"); + var newPassword = auth.makePassword(username, req.body.newpassword); + res.user.set("password", newPassword); + res.user + .save() + .then(() => next()) + .catch((err) => res.send({ error: err })); }, - changePasswordDangerously: function(req, res, next){ - if (! req.body.password && ! req.body.newpassword) return next() + changePasswordDangerously: function (req, res, next) { + if (!req.body.password && !req.body.newpassword) return next(); if (req.body.newpassword !== req.body.newpassword2) { - return res.send({ error: 'Passwords don\'t match.' }) + return res.send({ error: "Passwords don't match." }); } - if (! auth.validPassword(req.user, req.body.password)) { - return res.send({ error: 'Password is incorrect.' }) + if (!auth.validPassword(req.user, req.body.password)) { + return res.send({ error: "Password is incorrect." }); } - var username = res.user.get('username') - var newPassword = auth.makePassword(username, req.body.newpassword) - res.user.set('password', newPassword) - res.user.save().then(() => next()).catch(err => res.send({ error: err })) + var username = res.user.get("username"); + var newPassword = auth.makePassword(username, req.body.newpassword); + res.user.set("password", newPassword); + res.user + .save() + .then(() => next()) + .catch((err) => res.send({ error: err })); }, - verifyLocalUser: function (username, password, done) { + verifyLocalUser: function (username, password, done) { // handle passwords!! - db.getUserByUsername(username).then(function(user){ - - // if (err) { return done(err); } - if (! user) { return done("no user") } + db.getUserByUsername(username).then(function (user) { + // if (err) { return done(err); } + if (!user) { + return done("no user"); + } // return done(null, user) - if (! user || ! auth.validPassword(user, password)) { - return done(null, false, { error: { message: 'Bad username/password.' } }) - } - return done(null, user); - }) - }, + if (!user || !auth.validPassword(user, password)) { + return done(null, false, { + error: { message: "Bad username/password." }, + }); + } + return done(null, user); + }); + }, checkin: function (req, res) { - var user = util.sanitizeUser(req.user) - res.json({ user: user }) + var user = util.sanitizeUser(req.user); + res.json({ user: user }); }, - logout: function (req, res) { - req.logout(); - res.redirect('/'); - }, - -} + logout: function (req, res) { + req.logout(); + res.redirect("/"); + }, +}); |
