| Current Path : /var/www/html/reddsis/app/Http/Controllers/Backend/Auth/ |
| Current File : /var/www/html/reddsis/app/Http/Controllers/Backend/Auth/AuthenticatedSessionController.php |
<?php
namespace App\Http\Controllers\Backend\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class AuthenticatedSessionController extends Controller
{
/**
* Show login page
*/
public function create()
{
return view('backend.auth.login');
}
/**
* Handle login request
*/
public function store(Request $request)
{
$request->validate([
'login' => ['required', 'string'],
'password' => ['required'],
]);
$loginField = filter_var($request->login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
$credentials = [
$loginField => $request->login,
'password' => $request->password,
];
if (Auth::guard('admin')->attempt($credentials, $request->boolean('remember'))) {
$request->session()->regenerateToken();
// Update last login timestamp for the admin user without triggering activity log
if ($admin = Auth::guard('admin')->user()) {
// Only set if the column exists in the model/table
if (in_array('last_login_at', array_keys($admin->getAttributes()))) {
// Use updateQuietly to avoid logging and model events
$admin->updateQuietly(['last_login_at' => now()]);
}
}
// dd(Auth::getDefaultDriver());
// dd([
// 'guard_admin' => Auth::guard('admin')->check(),
// 'admin_user' => Auth::guard('admin')->user(),
// 'guard_user' => Auth::guard('user')->check(),
// 'user_user' => Auth::guard('user')->user(),
// ]);
return redirect()->intended('/admin/home');
}
return back()->withErrors([
'login' => 'The provided credentials do not match our records.',
])->onlyInput('login');
}
/**
* Logout admin
*/
public function destroy(Request $request)
{
Auth::guard('admin')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect()->route('admin.login');
}
/**
* Show forgot password page
*/
public function forgotPassword()
{
return view('backend.auth.forgot-password');
}
/**
* Send reset password link email
*/
public function sendResetLink(Request $request)
{
$request->validate([
'email' => ['required','email']
]);
$status = Password::broker('admin')->sendResetLink(
$request->only('email')
);
return $status === Password::RESET_LINK_SENT
? back()->with('status', __($status))
: back()->withErrors(['email' => __($status)]);
}
/**
* Show reset password form
*/
public function resetPasswordForm(Request $request, $token)
{
return view('backend.auth.reset-password', [
'token' => $token,
'email' => $request->query('email'),
]);
}
/**
* Handle reset password
*/
public function resetPassword(Request $request)
{
$request->validate([
'token' => ['required'],
'email' => ['required','email'],
'password' => ['required','confirmed','min:8'],
]);
$status = Password::broker('admin')->reset(
$request->only('email','password','password_confirmation','token'),
function ($user) use ($request) {
$user->forceFill([
'password' => Hash::make($request->password),
'remember_token' => Str::random(60),
])->save();
}
);
return $status === Password::PASSWORD_RESET
? redirect()->route('admin.login')->with('status', __($status))
: back()->withErrors(['email' => [__($status)]]);
}
}