moved all files to code directory

This commit is contained in:
2019-09-02 11:26:48 -04:00
parent 03d6973171
commit 236753b383
18 changed files with 0 additions and 0 deletions

90
nodejs/routes/auth.js Executable file
View File

@ -0,0 +1,90 @@
'use strict';
const router = require('express').Router();
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});
if(groups){
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)
});
}catch(error){
return res.status(400).json({
message: 'Key is not a public key file!'
});
}
});
router.post('/invite/:token', async function(req, res, next) {
let username = req.body.username;
let password = req.body.password;
let token = req.params.token;
// 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'
});
}
// 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;

9
nodejs/routes/index.js Executable 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;

76
nodejs/routes/routes.js Executable file
View File

@ -0,0 +1,76 @@
'use strict';
const router = require('express').Router();
const Host = require('../models/hosts');
router.get('/:host', async function(req, res){
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){
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){
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' : ''}`
});
}
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' : ''}`
});
}
try{
count = await Host.remove({host});
}catch(error){
return res.status(500).json({
message: `ERROR: ${error}`
});
}
return res.json({
message: `Host ${host} deleted`,
});
});
module.exports = router;

26
nodejs/routes/users.js Executable file
View File

@ -0,0 +1,26 @@
'use strict';
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});
});
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;