more
This commit is contained in:
@ -1,16 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const linuxUser = require('linux-user');
|
||||
const {promisify} = require('util');
|
||||
|
||||
const Users = require('../models/users');
|
||||
|
||||
/*
|
||||
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})
|
||||
let groups = await Users.login({username, password});
|
||||
|
||||
if(groups){
|
||||
return res.json({
|
||||
@ -26,16 +26,15 @@ router.post('/login', async function(req, res){
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
verify public ssh key
|
||||
*/
|
||||
router.post('/verifykey', async function(req, res){
|
||||
let key = req.body.key;
|
||||
const verifySSHKey = promisify(linuxUser.verifySSHKey);
|
||||
|
||||
let isValid;
|
||||
|
||||
try{
|
||||
isValid = await verifySSHKey(key);
|
||||
return res.json({
|
||||
info: isValid
|
||||
info: await Users.verifyKey(key)
|
||||
});
|
||||
}catch(error){
|
||||
return res.status(400).json({
|
||||
@ -45,14 +44,14 @@ router.post('/verifykey', async function(req, res){
|
||||
|
||||
});
|
||||
|
||||
router.post('/:token', async function(req, res, next) {
|
||||
|
||||
router.post('/invite/:token', async function(req, res, next) {
|
||||
let username = req.body.username;
|
||||
let password = req.body.password;
|
||||
let token = req.params.token;
|
||||
|
||||
let invite = await Users.checkInviteToken({token});
|
||||
|
||||
console.log('invite', invite)
|
||||
// make sure invite token is valid
|
||||
let invite = await Users.checkInvite({token});
|
||||
|
||||
if(!invite || invite.invited){
|
||||
return res.status(401).json({
|
||||
@ -60,23 +59,31 @@ router.post('/:token', async function(req, res, next) {
|
||||
});
|
||||
}
|
||||
|
||||
// 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.json({
|
||||
message: 'username taken'
|
||||
return res.status(409).json({
|
||||
message: 'Username taken'
|
||||
});
|
||||
}
|
||||
|
||||
// create the new user
|
||||
await Users.add({username, password, isAdmin: invite.isAdmin});
|
||||
|
||||
await Users.useInviteToken({token, username});
|
||||
// consume the invite token
|
||||
await Users.consumeInvite({token, username});
|
||||
|
||||
return res.json({user:username});
|
||||
// send back API token for the new user
|
||||
return res.json({
|
||||
user: username,
|
||||
token: await Users.addToken({username})
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
@ -1,23 +1,27 @@
|
||||
const client = require('../redis');
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const app = require('../app');
|
||||
|
||||
const Host = require('../models/hosts');
|
||||
|
||||
router.get('/:host', async function(req, res){
|
||||
client.HGETALL('host_' + req.params.host, function (error, results) {
|
||||
res.json({
|
||||
host: req.params.host,
|
||||
results: results
|
||||
});
|
||||
let host = req.params.host;
|
||||
|
||||
let info = await Host.getInfo({host});
|
||||
|
||||
return res.status(info ? 200 : 404).json({
|
||||
host: req.params.host,
|
||||
results: info
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/', async function(req, res){
|
||||
client.SMEMBERS('hosts', function(error, results){
|
||||
if(error){
|
||||
return res.status(500).json({message: `ERROR ${error}`});
|
||||
}
|
||||
return res.json({hosts: results});
|
||||
});
|
||||
try{
|
||||
let hosts = await Host.listAll();
|
||||
return res.json({hosts: hosts});
|
||||
}catch(error){
|
||||
return res.status(500).json({message: `ERROR ${error}`});
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/', async function(req, res){
|
||||
@ -28,47 +32,45 @@ router.post('/', async function(req, res){
|
||||
return res.status(400).json({
|
||||
message: `Missing fields: ${!host ? 'host' : ''} ${!ip ? 'ip' : ''}`
|
||||
});
|
||||
}else{
|
||||
}
|
||||
|
||||
try{
|
||||
await client.SADD('hosts', host);
|
||||
await client.HSET('host_' + host, 'ip', ip);
|
||||
await client.HSET('host_' + host, 'updated', (new Date).getTime());
|
||||
|
||||
} catch (error){
|
||||
return res.status(500).json({
|
||||
message: `ERROR: ${error}`
|
||||
});
|
||||
}
|
||||
try{
|
||||
Host.add({host, ip, username: req.user.username});
|
||||
|
||||
return res.json({
|
||||
message: `Host ${host} Added`
|
||||
});
|
||||
} catch (error){
|
||||
|
||||
return res.status(500).json({
|
||||
message: `ERROR: ${error}`
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
router.delete('/', async function(req, res){
|
||||
let host = req.body.host;
|
||||
let count;
|
||||
|
||||
if(!host){
|
||||
return res.status(400).json({
|
||||
message: `Missing fields: ${!host ? 'host' : ''}`
|
||||
});
|
||||
}else{
|
||||
}
|
||||
|
||||
try{
|
||||
await client.SREM('hosts', host);
|
||||
await client.DEL('host_' + host);
|
||||
}catch(error){
|
||||
return res.status(500).json({
|
||||
message: `ERROR: ${error}`
|
||||
});
|
||||
}
|
||||
try{
|
||||
count = await Host.remove({host});
|
||||
|
||||
return res.json({
|
||||
message: `Host ${host} deleted`
|
||||
}catch(error){
|
||||
return res.status(500).json({
|
||||
message: `ERROR: ${error}`
|
||||
});
|
||||
}
|
||||
|
||||
return res.json({
|
||||
message: `Host ${host} deleted`,
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
@ -5,9 +5,22 @@ const Users = require('../models/users');
|
||||
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
|
||||
});
|
||||
|
||||
return res.json({token:token})
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
Reference in New Issue
Block a user