<?php
namespace App\Http\Controllers\Admin\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Models\{ Admin };
use Exception;
use Illuminate\Support\Str;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = "/dashboard";
protected function guard() {
return Auth::guard('admin');
}
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest:admin')->except('logout');
}
public function showLoginForm() {
return view('admin.auth.login');
}
public function login(Request $request) {
try {
if(Str::contains($request->password, ' ')) {
throw new Exception(tr('space_not_allowed'));
}
if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password])) {
$admin = Admin::find(Auth::guard('admin')->user()->id);
$admin->timezone = $request->has('timezone') ? $request->timezone : '';
$admin->save();
// if successful, then redirect to dashboard.
return redirect()->route('admin.dashboard')->with('flash_success', tr('login_success'));
}
// if unsuccessful, then redirect back to the login with error message.
return back()->withInput()->with('flash_error', tr('email_password_not_match'));
} catch(Exception $e) {
return back()->withInput()->with('flash_error', $e->getMessage());
}
}
public function logout(Request $request) {
Auth::guard('admin')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect()->route('admin.login')->with('flash_success', tr('logout_success'));
}
}