source: app/Http/Controllers/SessionsController.php

main
Last change on this file was 3c89e27, checked in by bube-ristovska <ristovska725@…>, 3 months ago

Refactored duplicate code

  • Property mode set to 100644
File size: 3.1 KB
RevLine 
[75151c6]1<?php
2
3namespace App\Http\Controllers;
4
[cf84baa]5use App\Models\Officer;
[75151c6]6use Illuminate\Http\Request;
[cf84baa]7use Illuminate\Support\Facades\Auth;
8use Illuminate\Support\Facades\DB;
9use Illuminate\Support\Facades\Session;
[8a258ab]10use Illuminate\Support\Facades\Hash;
[75151c6]11
12class SessionsController extends Controller
13{
[8a258ab]14 function verifyPassword($inputPassword, $storedHash, $salt)
15 {
16 $hashedInputPassword = crypt($inputPassword . $salt, $storedHash);
17
18 return $hashedInputPassword === $storedHash;
19 }
[cf84baa]20 public function store()
21 {
22 $credentials = request()->validate([
23 'badge_no' => 'required',
24 'password' => 'required'
25 ]);
[3c89e27]26
[cf84baa]27 $password = $credentials['password'];
28 $badge_no = $credentials['badge_no'];
[3c89e27]29 if (!is_numeric($badge_no)) {
30 // Redirect back with an error message
31 return back()->withErrors(['password' => 'Invalid credentials']);
32 }
[69e9f5d]33 // mozhe da se najavi kako policaec i kako officer, znaeme koj e koj po znachkata
34
[cf84baa]35 $policeman = true;
[69e9f5d]36 $is_policeman = DB::select('select * from policeman where badge_no = :badge_no;', ['badge_no' => $badge_no]);
37 $is_officer = DB::select('select * from officer where o_badge_no = :badge_no;', ['badge_no' => $badge_no]);
38 if($is_officer==null && $is_policeman==null) {
39 return back()->withErrors(['password' => 'Invalid credentials']);
[cf84baa]40 }
[69e9f5d]41 if($is_officer!=null) {
42 $pass = DB::select('select o_password from officer where o_badge_no = :o_badge_no;', ['o_badge_no' => $badge_no]);
[8a258ab]43 $salt = DB::select('select salt from officer where o_badge_no = :o_badge_no;', ['o_badge_no' => $badge_no]);
[69e9f5d]44 $policeman = false;
45 } else {
46 $pass = DB::select('select p_password from policeman where badge_no = :badge_no;', ['badge_no' => $badge_no]);
[8a258ab]47 $salt = DB::select('select salt from policeman where badge_no = :badge_no;', ['badge_no' => $badge_no]);
48
[cf84baa]49 }
50
51 foreach ($pass[0] as $key => $val) {
52 $value = $val;
53 break; // Break after the first key-value pair
54 }
[8a258ab]55 foreach ($salt[0] as $key => $val) {
56 $value2 = $val;
57 break; // Break after the first key-value pair
58 }
59 if ($this->verifyPassword($password, $value, $value2)) {
[cf84baa]60 // Authentication passed
[5372778]61 Session::put('auth', true);
[cf84baa]62 Session::put('badge_no', $badge_no);
63 Session::put('is_policeman', $policeman);
[d9c4096]64 if($policeman){
[69e9f5d]65 Session::put('pe_id', $is_policeman[0]->pe_id);
[092fcda]66 Session::put('p_id', $is_policeman[0]->p_id);
[d9c4096]67 } else {
[69e9f5d]68 Session::put('pe_id', $is_officer[0]->pe_id);
[d9c4096]69 }
[7e9dadd]70 return view('welcome');
[cf84baa]71 }
72
73 // Authentication failed
74 return back()->withErrors(['password' => 'Invalid credentials']);
75 }
76 public function logout()
77 {
78 Session::forget('badge_no');
[69e9f5d]79 Session::forget('p_id');
80 Session::forget('pe_id');
[cf84baa]81 Session::forget('is_policeman');
82 return redirect('/login');
83 }
[75151c6]84}
Note: See TracBrowser for help on using the repository browser.