fix: good authentication process
This commit is contained in:
parent
945109a6f0
commit
3626f92d2d
@ -3,52 +3,9 @@ import bcrypt from 'bcrypt';
|
|||||||
import { SignJWT } from 'jose';
|
import { SignJWT } from 'jose';
|
||||||
import { JWT_ISSUER, JWT_AUDIENCE, JWT_SECRET, JWT_EXPIRATION, JWT_SECRET_KEY } from '../config/auth.config';
|
import { JWT_ISSUER, JWT_AUDIENCE, JWT_SECRET, JWT_EXPIRATION, JWT_SECRET_KEY } from '../config/auth.config';
|
||||||
import { Member, User } from '../types/member';
|
import { Member, User } from '../types/member';
|
||||||
import { new_client } from '../db/db_client';
|
import { getMember, createMember, userAdapter } from './member.controller';
|
||||||
import { Either, eitherLeft, eitherRight } from '../utils/utils';
|
import { Either, eitherLeft, eitherRight } from '../utils/utils';
|
||||||
|
|
||||||
const defaultUser = { id_member: -1, name: "unknown" };
|
|
||||||
const defaultMember = { id_member: -1, name: "unknown", password: "none" };
|
|
||||||
|
|
||||||
const getMember = async (idOrName: number | string): Promise<Either<Member, string>> => {
|
|
||||||
const client = new_client();
|
|
||||||
await client.connect();
|
|
||||||
let res;
|
|
||||||
if (typeof idOrName !== 'number') {
|
|
||||||
res = await client.query("SELECT * FROM membres WHERE nom_membre=$1;", [`${idOrName}`]);
|
|
||||||
} else {
|
|
||||||
res = await client.query("SELECT * FROM membres WHERE id_membre=$1;", [idOrName]);
|
|
||||||
}
|
|
||||||
if (res.rows.length === 0) {
|
|
||||||
await client.end();
|
|
||||||
return eitherRight<Member, string>("Does not exist.");
|
|
||||||
}
|
|
||||||
const member: Member = { id_member: res.rows[0].id_member, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre };
|
|
||||||
await client.end();
|
|
||||||
|
|
||||||
return eitherLeft<Member, string>(member);
|
|
||||||
}
|
|
||||||
|
|
||||||
const createMember = async (name: string, passwd: string): Promise<Either<Member, string>> => {
|
|
||||||
const gettingMember = await getMember(name);
|
|
||||||
if (!gettingMember.hasRight) {
|
|
||||||
return eitherRight<Member, string>("Already in database.");
|
|
||||||
}
|
|
||||||
const client = new_client();
|
|
||||||
await client.connect();
|
|
||||||
const res = await client.query("INSERT INTO membres (nom_membre, mdp_membre) VALUES ($1, $2) RETURNING *;", [`${name}`, `${passwd}`]);
|
|
||||||
if (res.rows.length === 0) {
|
|
||||||
await client.end();
|
|
||||||
return eitherRight<Member, string>("Something went wrong");
|
|
||||||
}
|
|
||||||
const member: Member = { id_member: res.rows[0].id_member, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre };
|
|
||||||
await client.end();
|
|
||||||
return eitherLeft<Member, string>(member);
|
|
||||||
}
|
|
||||||
|
|
||||||
function userAdapter(member: Member): User {
|
|
||||||
return { id_member: member.id_member, name: member.name };
|
|
||||||
}
|
|
||||||
|
|
||||||
const register = (req: Request, res: Response) => {
|
const register = (req: Request, res: Response) => {
|
||||||
if (!req || !req.body || !req.body.name || !req.body.password) {
|
if (!req || !req.body || !req.body.name || !req.body.password) {
|
||||||
res.status(400).send();
|
res.status(400).send();
|
||||||
@ -65,7 +22,6 @@ const register = (req: Request, res: Response) => {
|
|||||||
res.status(500).send();
|
res.status(500).send();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const member: Either<Member, string> = await createMember(name, hash);
|
const member: Either<Member, string> = await createMember(name, hash);
|
||||||
if (member.hasRight) {
|
if (member.hasRight) {
|
||||||
res.status(401).send(member.right);
|
res.status(401).send(member.right);
|
||||||
|
48
back-end/src/controllers/member.controller.ts
Normal file
48
back-end/src/controllers/member.controller.ts
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import { new_client } from '../db/db_client';
|
||||||
|
import { Member, User } from '../types/member';
|
||||||
|
import { Either, eitherLeft, eitherRight } from '../utils/utils';
|
||||||
|
|
||||||
|
const getDefaultUser = (): User => ({ id_member: -1, name: "unknown" });
|
||||||
|
const getDefaultMember = (): Member => ({ id_member: -1, name: "unknown", password: "none" });
|
||||||
|
|
||||||
|
const getMember = async (idOrName: number | string): Promise<Either<Member, string>> => {
|
||||||
|
const client = new_client();
|
||||||
|
await client.connect();
|
||||||
|
let res;
|
||||||
|
if (typeof idOrName !== 'number') {
|
||||||
|
res = await client.query("SELECT * FROM membres WHERE nom_membre=$1;", [`${idOrName}`]);
|
||||||
|
} else {
|
||||||
|
res = await client.query("SELECT * FROM membres WHERE id_membre=$1;", [idOrName]);
|
||||||
|
}
|
||||||
|
if (res.rows.length === 0) {
|
||||||
|
await client.end();
|
||||||
|
return eitherRight<Member, string>("Does not exist.");
|
||||||
|
}
|
||||||
|
const member: Member = { id_member: res.rows[0].id_membre, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre };
|
||||||
|
await client.end();
|
||||||
|
|
||||||
|
return eitherLeft<Member, string>(member);
|
||||||
|
}
|
||||||
|
|
||||||
|
const createMember = async (name: string, passwd: string): Promise<Either<Member, string>> => {
|
||||||
|
const gettingMember = await getMember(name);
|
||||||
|
if (!gettingMember.hasRight) {
|
||||||
|
return eitherRight<Member, string>("Already in database.");
|
||||||
|
}
|
||||||
|
const client = new_client();
|
||||||
|
await client.connect();
|
||||||
|
const res = await client.query("INSERT INTO membres (nom_membre, mdp_membre) VALUES ($1, $2) RETURNING *;", [`${name}`, `${passwd}`]);
|
||||||
|
if (res.rows.length === 0) {
|
||||||
|
await client.end();
|
||||||
|
return eitherRight<Member, string>("Something went wrong");
|
||||||
|
}
|
||||||
|
const member: Member = { id_member: res.rows[0].id_membre, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre };
|
||||||
|
await client.end();
|
||||||
|
return eitherLeft<Member, string>(member);
|
||||||
|
}
|
||||||
|
|
||||||
|
function userAdapter(member: Member): User {
|
||||||
|
return { id_member: member.id_member, name: member.name };
|
||||||
|
}
|
||||||
|
|
||||||
|
export { getDefaultUser, getDefaultMember, getMember, createMember, userAdapter };
|
Loading…
x
Reference in New Issue
Block a user