frist pass

This commit is contained in:
2018-02-13 19:58:47 -05:00
parent 45b0efaaec
commit b067b65a45
13 changed files with 1620 additions and 0 deletions

83
routes/auth.js Normal file
View File

@ -0,0 +1,83 @@
'use strict';
const router = require('express').Router();
const linuxUser = require('linux-user');
const {promisify} = require('util');
const Users = require('../models/users');
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){
return res.json({
login: true,
token: await Users.addToken({username}),
groups: groups,
});
}else{
return res.status(401).json({
login: false
});
}
});
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
});
}catch(error){
return res.status(400).json({
message: 'Key is not a public key file!'
});
}
});
router.post('/: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)
if(!invite || invite.invited){
return res.status(401).json({
message: 'Token not valid'
});
}
if(!username || !password){
return res.status(400).json({
message: 'Missing fields'
});
}
if(await Users.ifUserExists({username})){
return res.json({
message: 'username taken'
});
}
await Users.add({username, password, isAdmin: invite.isAdmin});
await Users.useInviteToken({token, username});
return res.json({user:username});
});
module.exports = router;

9
routes/index.js Normal file
View File

@ -0,0 +1,9 @@
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;

74
routes/routes.js Normal file
View File

@ -0,0 +1,74 @@
const client = require('../redis');
const router = require('express').Router();
const app = require('../app');
router.get('/:host', async function(req, res){
client.HGETALL('host_' + req.params.host, function (error, results) {
res.json({
host: req.params.host,
results: results
});
});
});
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});
});
});
router.post('/', async function(req, res){
let ip = req.body.ip;
let host = req.body.host;
if(!host || !ip){
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}`
});
}
return res.json({
message: `Host ${host} Added`
});
}
});
router.delete('/', async function(req, res){
let host = req.body.host;
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}`
});
}
return res.json({
message: `Host ${host} deleted`
});
}
});
module.exports = router;

13
routes/users.js Normal file
View File

@ -0,0 +1,13 @@
const router = require('express').Router();
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})
});
module.exports = router;