new model model
This commit is contained in:
@ -1,90 +1,55 @@
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const Users = require('../models/users');
|
||||
const {User} = require('../models/user');
|
||||
const {Auth, AuthToken} = require('../models/auth');
|
||||
|
||||
/*
|
||||
Password login
|
||||
*/
|
||||
router.post('/login', async function(req, res){
|
||||
let username = req.body.username;
|
||||
let password = req.body.password;
|
||||
|
||||
let groups = await Users.login({username, password});
|
||||
|
||||
if(groups){
|
||||
router.post('/login', async function(req, res, next){
|
||||
try{
|
||||
let auth = await Auth.login(req.body);
|
||||
return res.json({
|
||||
login: true,
|
||||
token: await Users.addToken({username}),
|
||||
groups: groups,
|
||||
});
|
||||
}else{
|
||||
return res.status(401).json({
|
||||
login: false
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
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)
|
||||
token: auth.token.token,
|
||||
});
|
||||
}catch(error){
|
||||
return res.status(400).json({
|
||||
message: 'Key is not a public key file!'
|
||||
});
|
||||
next(error);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
router.post('/invite/:token', async function(req, res, next) {
|
||||
let username = req.body.username;
|
||||
let password = req.body.password;
|
||||
let token = req.params.token;
|
||||
try{
|
||||
req.body.token = req.params.token;
|
||||
let user = await User.addByInvite(req.body);
|
||||
let token = await AuthToken.add(user);
|
||||
|
||||
// make sure invite token is valid
|
||||
let invite = await Users.checkInvite({token});
|
||||
|
||||
if(!invite || invite.invited){
|
||||
return res.status(401).json({
|
||||
message: 'Token not valid'
|
||||
return res.json({
|
||||
user: user.username,
|
||||
token: token.token
|
||||
});
|
||||
|
||||
}catch(error){
|
||||
next(error);
|
||||
}
|
||||
|
||||
// make sure requires fields are in
|
||||
if(!username || !password){
|
||||
return res.status(400).json({
|
||||
message: 'Missing fields'
|
||||
});
|
||||
}
|
||||
|
||||
// make sure the requested user name can be used
|
||||
if(await Users.ifUserExists({username})){
|
||||
return res.status(409).json({
|
||||
message: 'Username taken'
|
||||
});
|
||||
}
|
||||
|
||||
// create the new user
|
||||
await Users.add({username, password, isAdmin: invite.isAdmin});
|
||||
|
||||
// consume the invite token
|
||||
await Users.consumeInvite({token, username});
|
||||
|
||||
// send back API token for the new user
|
||||
return res.json({
|
||||
user: username,
|
||||
token: await Users.addToken({username})
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
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!'
|
||||
// });
|
||||
// }
|
||||
|
||||
// });
|
@ -1,15 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const {Host} = require('../models/host');
|
||||
|
||||
const Host = require('../models/hosts');
|
||||
|
||||
router.get('/:host', async function(req, res, next){
|
||||
try{
|
||||
|
||||
return res.json({
|
||||
host: req.params.host,
|
||||
results: await Host.getInfo({host: req.params.host})
|
||||
results: await Host.get({host: req.params.host})
|
||||
});
|
||||
}catch(error){
|
||||
return next(error);
|
||||
@ -20,7 +20,7 @@ router.get('/:host', async function(req, res, next){
|
||||
router.get('/', async function(req, res, next){
|
||||
try{
|
||||
return res.json({
|
||||
hosts: req.query.detail ? await Host.listAllDetail() : await Host.listAll()
|
||||
hosts: await Host[req.query.detail ? "listDetail" : "list"]()
|
||||
});
|
||||
}catch(error){
|
||||
next(error)
|
||||
@ -29,27 +29,27 @@ router.get('/', async function(req, res, next){
|
||||
|
||||
router.put('/:host', async function(req, res, next){
|
||||
try{
|
||||
req.body.username = req.user.username;
|
||||
await Host.edit(req.body, req.params.host);
|
||||
req.body.updated_by = req.user.username;
|
||||
await Host.update(req.body, req.params.host);
|
||||
|
||||
return res.json({
|
||||
message: `Host "${req.params.host}" updated.`
|
||||
});
|
||||
}catch(error){
|
||||
return next(error)
|
||||
return next(error);
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/', async function(req, res, next){
|
||||
try{
|
||||
req.body.username = req.user.username;
|
||||
req.body.created_by = req.user.username;
|
||||
await Host.add(req.body);
|
||||
|
||||
return res.json({
|
||||
message: `Host "${req.body.host}" added.`
|
||||
});
|
||||
} catch (error){
|
||||
next(error)
|
||||
next(error);
|
||||
}
|
||||
|
||||
});
|
||||
@ -57,15 +57,15 @@ router.post('/', async function(req, res, next){
|
||||
router.delete('/:host', async function(req, res, next){
|
||||
|
||||
try{
|
||||
let host = req.params.host;
|
||||
let count = await Host.remove({host});
|
||||
let host = await Host.get(req.params);
|
||||
let count = await host.remove(host);
|
||||
|
||||
return res.json({
|
||||
message: `Host ${req.params.host} deleted`,
|
||||
});
|
||||
|
||||
}catch(error){
|
||||
return next(error)
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
42
nodejs/routes/user.js
Executable file
42
nodejs/routes/user.js
Executable file
@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const {User} = require('../models/user');
|
||||
|
||||
|
||||
router.get('/me', async function(req, res){
|
||||
try{
|
||||
return res.json({username: req.user.username});
|
||||
}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({
|
||||
username: req.user.username,
|
||||
key: req.body.key
|
||||
});
|
||||
|
||||
return res.status(added === true ? 200 : 400).json({
|
||||
message: added
|
||||
});
|
||||
|
||||
}catch(error){
|
||||
next(error);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
module.exports = router;
|
@ -1,30 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const Users = require('../models/users');
|
||||
|
||||
router.get('/me', async function(req, res){
|
||||
return res.json({username: req.user.username});
|
||||
});
|
||||
|
||||
router.post('/invite', async function(req, res){
|
||||
let token = await Users.makeInviteToken({
|
||||
username: res.user
|
||||
});
|
||||
|
||||
return res.json({token:token});
|
||||
});
|
||||
|
||||
router.post('/key', async function(req, res){
|
||||
let added = await Users.addSSHkey({
|
||||
username: req.user.username,
|
||||
key: req.body.key
|
||||
});
|
||||
|
||||
return res.status(added === true ? 200 : 400).json({
|
||||
message: added
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
module.exports = router;
|
Reference in New Issue
Block a user