groups and reset

This commit is contained in:
2020-05-15 00:40:15 -04:00
parent e71fccd27c
commit 0889832efc
22 changed files with 1463 additions and 128 deletions

View File

@ -2,7 +2,8 @@
const router = require('express').Router();
const {User} = require('../models/user');
const {Auth, AuthToken} = require('../models/auth');
const {Auth, AuthToken} = require('../models/auth');
const {PasswordResetToken} = require('../models/token');
router.post('/login', async function(req, res, next){
@ -11,6 +12,7 @@ router.post('/login', async function(req, res, next){
return res.json({
login: true,
token: auth.token.token,
message:`${req.body.uid} logged in!`,
});
}catch(error){
next(error);
@ -29,6 +31,36 @@ router.all('/logout', async function(req, res, next){
}
});
router.post('/resetpassword', async function(req, res, next){
try{
let sent = await User.passwordReset(`${req.protocol}://${req.hostname}`, req.body.mail);
console.info('resetpassword for', req.body.mail, sent)
return res.json({
message: 'If the emaill address is in our system, you will receive a message.'
});
}catch(error){
next(error);
}
});
router.post('/resetpassword/:token', async function(req, res, next){
try{
let token = await PasswordResetToken.get(req.params.token);
if(token.is_valid && 86400000+Number(token.created_on) > (new Date).getTime()){
let user = await User.get(token.created_by);
await user.setPassword(req.body);
return res.json({
message: 'Password has been changed.'
});
}
}catch(error){
next(error);
}
});
router.post('/invite/:token/:mailToken', async function(req, res, next) {
try{
req.body.token = req.params.token;

View File

@ -1,6 +1,7 @@
'use strict';
const router = require('express').Router();
const {User} = require('../models/user_ldap');
const {Group} = require('../models/group_ldap');
router.get('/', async function(req, res, next){
@ -13,6 +14,18 @@ router.get('/', async function(req, res, next){
}
});
router.post('/', async function(req, res, next){
try{
req.body.owner = req.user.dn;
return res.json({
results: await Group.add(req.body),
message: `${req.body.name} was added!`
})
}catch(error){
next(error);
}
});
router.get('/:name', async function(req, res, next){
try{
return res.json({
@ -23,4 +36,43 @@ router.get('/:name', async function(req, res, next){
}
});
router.put('/:name/:uid', async function(req, res, next){
try{
var group = await Group.get(req.params.name);
var user = await User.get(req.params.uid);
return res.json({
results: group.addMember(user),
message: `Added user ${req.params.uid} to ${req.params.name} group.`
});
}catch(error){
next(error);
}
});
router.delete('/:name/:uid', async function(req, res, next){
try{
var group = await Group.get(req.params.name);
var user = await User.get(req.params.uid);
return res.json({
results: group.removeMember(user),
message: `Removed user ${req.params.uid} from ${req.params.name} group.`
});
}catch(error){
next(error);
}
});
router.delete('/:name', async function(req, res, next){
try{
var group = await Group.get(req.params.name);
return res.json({
removed: await group.remove(),
results: group,
message: `Group ${req.params.name} Deleted`
});
}catch(error){
next(error);
}
});
module.exports = router;

View File

@ -3,7 +3,7 @@
var express = require('express');
var router = express.Router();
const moment = require('moment');
const {InviteToken} = require('./../models/token');
const {InviteToken, PasswordResetToken} = require('./../models/token');
/* GET home page. */
@ -16,6 +16,21 @@ router.get('/users', function(req, res, next) {
res.render('users', { title: 'Express' });
});
router.get('/groups', function(req, res, next) {
res.render('groups', { title: 'Express' });
});
router.get('/login/resetpassword/:token', async function(req, res, next){
let token = await PasswordResetToken.get(req.params.token);
if(token.is_valid && 86400000+Number(token.created_on) > (new Date).getTime()){
res.render('reset_password', {token:token});
}else{
next({message: 'token not found', status: 404});
}
});
router.get('/login/invite/:token/:mailToken', async function(req, res, next){
try{

View File

@ -52,10 +52,13 @@ router.put('/password', async function(req, res, next){
}
});
router.put('/password/:uid', async function(req, res, next){
router.put('/:uid/password', async function(req, res, next){
try{
let user = await User.get(req.params.uid);
return res.json({results: await user.setPassword(req.body)});
return res.json({
results: await user.setPassword(req.body),
message: `User ${user.uid} password changed.`
});
}catch(error){
next(error);
}