LoginController.php
3.64 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
namespace App\Http\Controllers\Frontend\Auth;
use App\Helpers\Auth\Auth;
use Illuminate\Http\Request;
use App\Exceptions\GeneralException;
use App\Http\Controllers\Controller;
use App\Helpers\Frontend\Auth\Socialite;
use App\Events\Frontend\Auth\UserLoggedIn;
use App\Events\Frontend\Auth\UserLoggedOut;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use App\Repositories\Frontend\Access\User\UserSessionRepository;
/**
* Class LoginController.
*/
class LoginController extends Controller
{
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @return string
*/
public function redirectPath()
{
return route(homeRoute());
}
/**
* Show the application's login form.
*
* @return \Illuminate\Http\Response
*/
public function showLoginForm()
{
return view('frontend.auth.login');
}
/**
* @param Request $request
* @param $user
*
* @throws GeneralException
*
* @return \Illuminate\Http\RedirectResponse
*/
protected function authenticated(Request $request, $user)
{
/*
* Check to see if the users account is confirmed and active
*/
if (! $user->isActive()) {
access()->logout();
throw new GeneralException(trans('exceptions.frontend.auth.deactivated'));
}
event(new UserLoggedIn($user));
// If only allowed one session at a time
if (config('access.users.single_login')) {
app()->make(UserSessionRepository::class)->clearSessionExceptCurrent($user);
}
return redirect()->intended($this->redirectPath());
}
/**
* Log the user out of the application.
*
* @param Request $request
*
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
/*
* Boilerplate needed logic
*/
/*
* Remove the socialite session variable if exists
*/
if (app('session')->has(config('access.socialite_session_name'))) {
app('session')->forget(config('access.socialite_session_name'));
}
/*
* Remove any session data from backend
*/
app()->make(Auth::class)->flushTempSession();
/*
* Fire event, Log out user, Redirect
*/
event(new UserLoggedOut($this->guard()->user()));
/*
* Laravel specific logic
*/
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/');
}
/**
* @return \Illuminate\Http\RedirectResponse
*/
public function logoutAs()
{
//If for some reason route is getting hit without someone already logged in
if (! access()->user()) {
return redirect()->route('frontend.auth.login');
}
//If admin id is set, relogin
if (session()->has('admin_user_id') && session()->has('temp_user_id')) {
//Save admin id
$admin_id = session()->get('admin_user_id');
app()->make(Auth::class)->flushTempSession();
//Re-login admin
access()->loginUsingId((int) $admin_id);
//Redirect to backend user page
return redirect()->route('admin.access.user.index');
} else {
app()->make(Auth::class)->flushTempSession();
//Otherwise logout and redirect to login
access()->logout();
return redirect()->route('frontend.auth.login');
}
}
public function username()
{
return 'username';
}
}