feat: begin member

This commit is contained in:
Alessandre Laguierce 2024-10-25 21:05:52 +02:00
parent 3b0d794791
commit 91e1f142ad
6 changed files with 64 additions and 2 deletions

View File

@ -21,6 +21,8 @@
"typescript": "^5.6.3"
},
"dependencies": {
"bcrypt": "^5.1.1",
"body-parser": "^1.20.3",
"dotenv": "^16.4.5",
"ejs": "^3.1.10",
"express": "^4.21.1",

View File

@ -5,6 +5,7 @@ dotenv.config()
import express from 'express';
import morgan from 'morgan';
import path from 'path';
import bodyParser from 'body-parser';
import routes from './routes';
const app = express();
@ -19,6 +20,8 @@ console.log("=== END LOG CONFIG ===");
// Need the path.join for node to resolve correctly the templates directory
app.set('views', path.join(__dirname, 'templates'));
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json({ limit: '50mb' }));
// Add logs
app.use(morgan(log_format));

View File

@ -0,0 +1,38 @@
import { Request, Response, Router } from 'express';
import bcrypt from 'bcrypt';
import { Member, User } from '../types/member';
const defaultMember = { id_member: -1, name: "unknown" };
function getMember(idOrName: number | string): Member {
return defaultMember;
}
function createMember(name: string, passwd: string): Member {
return defaultMember;
}
const register = (req: Request, res: Response) => {
if (!req || !req.body || !req.body.name || !req.body.password) {
console.log(req.body);
res.send(req.body);
return;
}
const name: string = req.body.name;
bcrypt.genSalt(10, (err, salt) => {
if (err) {
// Handle error
return;
}
bcrypt.hash(req.body.password, salt, (err, hash) => {
if (err) {
// Handle error
return;
}
res.send(createMember(name, hash));
});
});
}
export { register };

View File

@ -1,7 +1,8 @@
import { Router } from "express";
import express from 'express';
import membersRoute from './members.route'
import db from '../db';
const routes = Router();
const routes = express.Router();
routes.get('/', async (_req, res) => {
const message = await db.example_request();
@ -13,4 +14,6 @@ routes.get("/message", async (_req, res) => {
res.render('index.ejs', { message });
});
routes.use("/members", membersRoute);
export default routes;

View File

@ -0,0 +1,8 @@
import express from 'express';
import { register } from '../controllers/members.controller';
const router = express.Router();
router.post('/register', register);
export default router;

View File

@ -0,0 +1,8 @@
type Member = {
id_member: number,
name: string
}
type User = Member | { password: string };
export { Member, User };