Advertisement
Guest User

Untitled

a guest
Apr 9th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import bcrypt from 'bcrypt';
  2.  
  3. import { getDB } from '../../database';
  4. import dbTables from '../../constants/db_tables';
  5. import roles from '../../constants/roles';
  6. import { createToken } from '../../auth/jwt';
  7.  
  8. /**
  9.  * Funksioni qe menaxhon log-in ne sistem.
  10.  * Ne trupin e kerkeses HTTP vjen email dhe password.
  11.  */
  12.  
  13. export const logIn = (request, response) => {
  14.   const db = getDB();
  15.   const sessionToken = createToken({
  16.     email: request.body.email,
  17.     password: request.body.password,
  18.   });
  19.  
  20.  
  21.   // Query per te kerkuar perdoruesin ne baze te emailit
  22.   const queryUser = `
  23.     SELECT *
  24.     FROM ${dbTables.PERDORUES}
  25.     WHERE ${dbTables.PERDORUES}.email = ${db.escape(request.body.email)}
  26.   `;
  27.  
  28.   // Ekzekutimi i query
  29.   db.query(queryUser, async (error, results, fields) => {
  30.  
  31.     // Kontrolli nese ekziston perdorues me emailin e marre
  32.     if (results && results.length > 0) {
  33.       const user = results[0];
  34.  
  35.       // Verifikimi i passwordit (krahasohen versionet e hashuara)
  36.       const passwordCorrect = await bcrypt.compare(request.body.password, user.password);
  37.  
  38.       if (passwordCorrect) {
  39.        
  40.         /**
  41.          * Jemi ne situaten kur perdoruesi eshte autentikuar me sukses.
  42.          * Ne baze te rolit, bejme dhe nje query tjeter te tabela perkatese
  43.          * (ADMINISTRATOR; SEKRETAR; STUDENT ose PEDAGOG) per te marre gjithe
  44.          * objektin dhe per tia kthyer perdoruesit.
  45.          */
  46.  
  47.         let queryFullUserObject;
  48.  
  49.         if (user.roli === roles.ADMINISTRATOR) {
  50.           queryFullUserObject = `
  51.             SELECT *
  52.             FROM ${dbTables.ADMINISTRATOR}
  53.             WHERE ${dbTables.ADMINISTRATOR}.id_perdorues = ${user.id}
  54.           `;
  55.         } else if (user.roli === roles.SECRETARY) {
  56.           queryFullUserObject = `
  57.             SELECT *
  58.             FROM ${dbTables.SEKRETAR}
  59.             WHERE ${dbTables.SEKRETAR}.id_perdorues = ${user.id}
  60.           `;
  61.         } else if (user.roli === roles.PEDAGOGUE) {
  62.           queryFullUserObject = `
  63.             SELECT *
  64.             FROM ${dbTables.PEDAGOG}
  65.             WHERE ${dbTables.PEDAGOG}.id_perdorues = ${user.id}
  66.           `;
  67.         } else if (user.roli === roles.STUDENT) {
  68.           queryFullUserObject = `
  69.             SELECT *
  70.             FROM ${dbTables.STUDENT}
  71.             WHERE ${dbTables.STUDENT}.id_perdorues = ${user.id}
  72.           `;
  73.         }
  74.  
  75.         db.query(queryFullUserObject, (error2, results2, fields2) => {
  76.           if (results2 && results2.length > 0) {
  77.             const fullUserObject = results2[0];
  78.  
  79.             // Kthimi i objektit te plote te perdoruesit bashke me tokenin e sesionit
  80.             response.json({
  81.               email: user.email,
  82.               role: user.role,
  83.               token: sessionToken,
  84.               ...fullUserObject,
  85.             });
  86.           } else  {
  87.             response.status(401).json({
  88.               code: 401,
  89.               message: 'Problem në ekzekutimin e kërkesës. Provoni përsëri!',
  90.             });
  91.           }
  92.         });
  93.       } else {
  94.         response.status(401).json({
  95.           code: 401,
  96.           message: 'Fjalëkalimi është i gabuar',
  97.         });
  98.       }
  99.     } else {
  100.       response.status(401).json({
  101.         code: 401,
  102.         message: 'Përdoruesi me email-in e dhënë nuk ekziston',
  103.       });
  104.     }
  105.   });
  106. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement