Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import bcrypt from 'bcrypt';
- import { getDB } from '../../database';
- import dbTables from '../../constants/db_tables';
- import roles from '../../constants/roles';
- import { createToken } from '../../auth/jwt';
- /**
- * Funksioni qe menaxhon log-in ne sistem.
- * Ne trupin e kerkeses HTTP vjen email dhe password.
- */
- export const logIn = (request, response) => {
- const db = getDB();
- const sessionToken = createToken({
- email: request.body.email,
- password: request.body.password,
- });
- // Query per te kerkuar perdoruesin ne baze te emailit
- const queryUser = `
- SELECT *
- FROM ${dbTables.PERDORUES}
- WHERE ${dbTables.PERDORUES}.email = ${db.escape(request.body.email)}
- `;
- // Ekzekutimi i query
- db.query(queryUser, async (error, results, fields) => {
- // Kontrolli nese ekziston perdorues me emailin e marre
- if (results && results.length > 0) {
- const user = results[0];
- // Verifikimi i passwordit (krahasohen versionet e hashuara)
- const passwordCorrect = await bcrypt.compare(request.body.password, user.password);
- if (passwordCorrect) {
- /**
- * Jemi ne situaten kur perdoruesi eshte autentikuar me sukses.
- * Ne baze te rolit, bejme dhe nje query tjeter te tabela perkatese
- * (ADMINISTRATOR; SEKRETAR; STUDENT ose PEDAGOG) per te marre gjithe
- * objektin dhe per tia kthyer perdoruesit.
- */
- let queryFullUserObject;
- if (user.roli === roles.ADMINISTRATOR) {
- queryFullUserObject = `
- SELECT *
- FROM ${dbTables.ADMINISTRATOR}
- WHERE ${dbTables.ADMINISTRATOR}.id_perdorues = ${user.id}
- `;
- } else if (user.roli === roles.SECRETARY) {
- queryFullUserObject = `
- SELECT *
- FROM ${dbTables.SEKRETAR}
- WHERE ${dbTables.SEKRETAR}.id_perdorues = ${user.id}
- `;
- } else if (user.roli === roles.PEDAGOGUE) {
- queryFullUserObject = `
- SELECT *
- FROM ${dbTables.PEDAGOG}
- WHERE ${dbTables.PEDAGOG}.id_perdorues = ${user.id}
- `;
- } else if (user.roli === roles.STUDENT) {
- queryFullUserObject = `
- SELECT *
- FROM ${dbTables.STUDENT}
- WHERE ${dbTables.STUDENT}.id_perdorues = ${user.id}
- `;
- }
- db.query(queryFullUserObject, (error2, results2, fields2) => {
- if (results2 && results2.length > 0) {
- const fullUserObject = results2[0];
- // Kthimi i objektit te plote te perdoruesit bashke me tokenin e sesionit
- response.json({
- email: user.email,
- role: user.role,
- token: sessionToken,
- ...fullUserObject,
- });
- } else {
- response.status(401).json({
- code: 401,
- message: 'Problem në ekzekutimin e kërkesës. Provoni përsëri!',
- });
- }
- });
- } else {
- response.status(401).json({
- code: 401,
- message: 'Fjalëkalimi është i gabuar',
- });
- }
- } else {
- response.status(401).json({
- code: 401,
- message: 'Përdoruesi me email-in e dhënë nuk ekziston',
- });
- }
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement