summaryrefslogtreecommitdiff
path: root/bucky/util/auth.js
diff options
context:
space:
mode:
authorjulian laplace <julescarbon@gmail.com>2022-10-25 23:26:31 +0200
committerjulian laplace <julescarbon@gmail.com>2022-10-25 23:26:31 +0200
commit1cfed2612fd1042a15d470a44ec87588c966dc12 (patch)
treeba850f589194a21fd1587dd71dfcd056a242e4ac /bucky/util/auth.js
parentae311b71cccf5df9e0e19e276615cc32426d9de1 (diff)
hootstream... dark mode only
Diffstat (limited to 'bucky/util/auth.js')
-rw-r--r--bucky/util/auth.js250
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("/");
+ },
+});