simple proxmox

This commit is contained in:
2020-08-26 15:41:37 -04:00
parent f7cee0239e
commit f18967ce8b
26 changed files with 964 additions and 2504 deletions

View File

@ -1,9 +1,7 @@
'use strict';
const router = require('express').Router();
const {User} = require('../models/user');
const {Auth, AuthToken} = require('../models/auth');
const {PasswordResetToken} = require('../models/token');
router.post('/login', async function(req, res, next){
@ -31,86 +29,4 @@ 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);
token.update({is_valid: false});
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;
req.body.mailToken = req.params.mailToken;
let user = await User.addByInvite(req.body);
let token = await AuthToken.add(user);
return res.json({
user: user.uid,
token: token.token
});
}catch(error){
next(error);
}
});
router.post('/invite/:token', async function(req, res, next){
try{
let data = {
token: req.params.token,
url: `${req.protocol}://${req.hostname}`,
mail: req.body.mail,
}
await User.verifyEmail(data);
return res.send({message: 'sent'});
}catch(error){
next(error)
}
});
module.exports = router;
/*
verify public ssh key
*/
// router.post('/verifykey', async function(req, res){
// let key = req.body.key;
// try{
// return res.json({
// info: await Users.verifyKey(key)
// });
// }catch(error){
// return res.status(400).json({
// message: 'Key is not a public key file!'
// });
// }
// });

View File

@ -1,82 +0,0 @@
'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){
try{
let member = req.query.member ? await User.get(req.query.member) : {}
console.log('member', member)
return res.json({
results: await Group[req.query.detail ? "listDetail" : "list"](member.dn)
});
}catch(error){
next(error);
}
});
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({
results: await Group.get(req.params.name)
});
}catch(error){
next(error);
}
});
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

@ -12,64 +12,21 @@ router.get('/', async function(req, res, next) {
});
/* GET home page. */
router.get('/users', function(req, res, next) {
res.render('users', { title: 'Express' });
router.get('/topics', function(req, res, next) {
res.render('topics', { title: 'Express' });
});
router.get('/users/:uid', function(req, res, next) {
res.render('home', { title: 'Express' });
router.get('/chat', function(req, res, next) {
res.render('chat', { 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{
let token = await InviteToken.get(req.params.token);
if(token.is_valid && token.mail !== '__NONE__' && token.mail_token === req.params.mailToken){
token.created_on = moment(token.created_on, 'x').fromNow();
res.render('invite', { title: 'Express', invite: token });
}else{
next({message: 'token not found', status: 404});
}
}catch(error){
next(error);
}
});
router.get('/login/invite/:token', async function(req, res, next){
try{
let token = await InviteToken.get(req.params.token);
token.created_on = moment(token.created_on, 'x').fromNow();
if(token.is_valid){
res.render('invite_email', { title: 'Express', invite: token });
}else{
next({message: 'token not found', status: 404});
}
}catch(error){
next(error);
}
});
/* GET home page. */
router.get('/login', function(req, res, next) {
res.render('login', {redirect: req.query.redirect});
});
router.get('/proxmox', function(req, res, next) {
res.render('proxmox', {});
});
module.exports = router;

83
nodejs/routes/user.js Executable file → Normal file
View File

@ -13,42 +13,6 @@ router.get('/', async function(req, res, next){
}
});
router.post('/', async function(req, res, next){
try{
req.body.created_by = req.user.uid
return res.json({results: await User.add(req.body)});
}catch(error){
next(error);
}
});
router.delete('/:uid', async function(req, res, next){
try{
let user = await User.get(req.params.uid);
return res.json({uid: req.params.uid, results: await user.remove()})
}catch(error){
next(error);
}
});
router.put('/:uid', async function(req, res, next){
try{
let user = await User.get(req.params.uid);
// console.log('update user', user);
return res.json({
results: await user.update(req.body),
message: `Updated ${req.params.uid} user`
});
}catch(error){
next(error);
}
});
router.get('/me', async function(req, res, next){
try{
@ -58,53 +22,6 @@ router.get('/me', async function(req, res, next){
}
});
router.put('/password', async function(req, res, next){
try{
return res.json({results: await req.user.setPassword(req.body)})
}catch(error){
next(error);
}
});
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),
message: `User ${user.uid} password changed.`
});
}catch(error){
next(error);
}
});
router.post('/invite', async function(req, res, next){
try{
let token = await req.user.invite();
return res.json({token: token.token});
}catch(error){
next(error);
}
});
router.post('/key', async function(req, res, next){
try{
let added = await User.addSSHkey({
uid: req.user.uid,
key: req.body.key
});
return res.status(added === true ? 200 : 400).json({
message: added
});
}catch(error){
next(error);
}
});
router.get('/:uid', async function(req, res, next){
try{
return res.json({