API's: employee onboarding, authentication through JWT
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
const express = require('express');
|
||||
const bcrypt = require('bcryptjs');
|
||||
const db = require('./db');
|
||||
require('dotenv').config();
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
// Employee onboarding
|
||||
app.post('/createemployee', async (req, res) => {
|
||||
try {
|
||||
const {firstname, lastname, job, password} = req.body;
|
||||
if (!firstname || !lastname || !job || !password) return res.status(400).json({error: 'Firstname, Lastname, Job title and password are required'});
|
||||
|
||||
const resultCreateEmployee = await db.query('INSERT INTO workers.employees (firstname, lastname, job) VALUES ($1, $2, $3) RETURNING id', [firstname, lastname, job]);
|
||||
const newEmployee = resultCreateEmployee.rows[0];
|
||||
const encryptedpassword = await bcrypt.hash(password, 12);
|
||||
const resultCreateUser = await db.query('INSERT INTO workers.users (employee, password) VALUES ($1, $2) RETURNING usercode', [newEmployee.id, encryptedpassword]);
|
||||
const newUser = resultCreateUser.rows[0];
|
||||
return res.status(201).json({ employee: firstname, code: newUser.usercoden });
|
||||
}
|
||||
catch (err) {
|
||||
console.error(err);
|
||||
res.status(500).json({ error: 'internal_error' });
|
||||
}
|
||||
})
|
||||
|
||||
app.get('/health', async (_req, res, _next) => {
|
||||
try {
|
||||
return res.status(200).json({endpoint: 'reachable'})
|
||||
}
|
||||
catch (err) {
|
||||
console.error(err);
|
||||
res.status(500).json({endpoint: 'unreachable'})
|
||||
}
|
||||
})
|
||||
|
||||
const PORT = process.env.PORT || 4000;
|
||||
app.listen(PORT, () => console.log(`Auth API listening on ${PORT}`));
|
||||
|
||||
module.exports = app;
|
||||
Reference in New Issue
Block a user