frist pass
This commit is contained in:
83
routes/auth.js
Normal file
83
routes/auth.js
Normal 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;
|
Reference in New Issue
Block a user