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