File size: 2,692 Bytes
d57331c
 
 
 
 
1251c2f
 
 
d57331c
 
 
 
 
 
 
1251c2f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d57331c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\CustomUser;
use Auth;
use Hash;

class HomeController extends Controller
{
    //
    public function home(){
        return view("home");
    }
    public function login_form(){
        return view("login");
    }
    public function signup_form(){
        return view("signup");
    }

    public function signup(Request $request){
        // username and password
        $request->validate([
            "username"=>[
                "required",
                "string",
                "regex:/^[a-z][a-z0-9-]*[a-z0-9]$/",    // regex for a-z 0-9 and - in middle
                "unique:App\Models\CustomUser",     // username shouldn't exist in db
            ],
            "password"=>[
                "required",
                "string",
                "min:1",
                "max:30",
            ],
            "confirm_password"=>[
                "required",
                "string",
                "min:1",
                "max:30",
            ],
        ]);

        // check if password matchs confirm password
        \Log::info($request);
        if($request['password']!=$request['confirm_password'])
        {
            // return error
            return redirect()->back()->withErrors([
                "confirm_password"=>"confirm password doesn't match the password"
            ]);
        }
        // create user
        $user = new CustomUser();
        $user->username = $request->username;
        $user->password = Hash::make($request->password);
        $user->save();

        return redirect(route("login.form"));
    }

    public function login(Request $request){
        // username and password
        $request->validate([
            "username"=>[
                "required",
                "string",
                "regex:/^[a-z][a-z0-9-]*[a-z0-9]$/",    // regex for a-z 0-9 and - in middle
                "exists:App\Models\CustomUser",     // username should exist in db
            ],
            "password"=>[
                "required",
                "string",
                "min:1",
                "max:30",
            ],
        ]);

        // \Log::info($request);
        // login
        $user = CustomUser::where("username",$request->username)->first();

        if(!Hash::check($request->password, $user->password)){
            // password is incorrect
            Auth::guard('customuser')->logout();

            return redirect()->back()->withErrors([
                "password"=>"incorrect password"
            ]);
        }

        Auth::guard('customuser')->login($user);
        return redirect(route('dashboard'));
    }
}