a8a966866c
* Added some basic table styles for inserting some shitty tables * Made popup notification styles look better and work better on mobile * Quick note now opens a note and not some weird page * Menu collapses when page is small, behaves like mobile menu * Added terms and conditions to help and login forms * Added password change functionality * Better styles for shared page * Added some tests for changing password
95 lines
2.2 KiB
JavaScript
95 lines
2.2 KiB
JavaScript
var express = require('express')
|
|
var router = express.Router()
|
|
|
|
const User = require('@models/User')
|
|
const Auth = require('@helpers/Auth')
|
|
const cs = require('@helpers/CryptoString')
|
|
|
|
// middleware that is specific to this router
|
|
router.use(function timeLog (req, res, next) {
|
|
// console.log('Time: ', Date.now())
|
|
next()
|
|
})
|
|
|
|
// Login User
|
|
router.post('/login', function (req, res) {
|
|
|
|
User.login(req.body.username, req.body.password, req.body.authToken)
|
|
.then( returnData => {
|
|
res.send(returnData)
|
|
})
|
|
})
|
|
// Logout User
|
|
router.post('/logout', function (req, res) {
|
|
|
|
User.logout(req.headers.sessionId)
|
|
.then( returnData => {
|
|
res.send(true)
|
|
})
|
|
})
|
|
|
|
// Register User
|
|
router.post('/register', function (req, res) {
|
|
|
|
User.register(req.body.username, req.body.password)
|
|
.then( returnData => {
|
|
|
|
res.send(returnData)
|
|
})
|
|
.catch(e => {
|
|
res.send(false)
|
|
})
|
|
})
|
|
|
|
// change password
|
|
router.post('/changepassword', function (req, res) {
|
|
|
|
User.changePassword(req.headers.userId, req.body.currentPass, req.body.newPass)
|
|
.then( returnData => {
|
|
res.send(returnData)
|
|
})
|
|
})
|
|
|
|
//Revoke all active session keys for user
|
|
router.post('/revokesessions', function(req, res) {
|
|
|
|
User.revokeActiveSessions(req.headers.userId, req.headers.sessionId)
|
|
.then( returnData => {
|
|
res.send(returnData)
|
|
})
|
|
|
|
})
|
|
|
|
// fetch counts of users notes
|
|
router.post('/totals', function (req, res) {
|
|
User.getCounts(req.headers.userId)
|
|
.then( countsObject => res.send( countsObject ))
|
|
})
|
|
|
|
//
|
|
// Two Factor Auth Setup
|
|
//
|
|
router.post('/twofactorsetup', function (req, res) {
|
|
|
|
//Send QR code to user for 2FA setup
|
|
Auth.generateTwoFactorSecretKey(req.headers.userId, req.body.password)
|
|
.then( ({ qrCode }) => { res.send( qrCode ) })
|
|
})
|
|
|
|
router.post('/verifytwofactorsetuptoken', function (req, res) {
|
|
|
|
//Verify Users QR code with token
|
|
Auth.setTwoFactorEnabled(req.headers.userId, req.body.password, req.body.token, true)
|
|
.then( ( results ) => { res.send( results ) })
|
|
})
|
|
|
|
router.post('/validatetwofactortoken', function (req, res) {
|
|
|
|
//Verify Users QR code with token
|
|
Auth.validateTwoFactorToken(req.headers.userId, req.body.password, req.body.token)
|
|
.then( ( results ) => { res.send( results ) })
|
|
})
|
|
|
|
|
|
|
|
module.exports = router |