123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
-
- namespace App\Http\Controllers\Auth;
-
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
-
- use App\Model\Staff;
- use Carbon\Carbon;
- Use Hash;
- use Session;
-
- 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.
- |
- */
-
- /**
- * Create a get_guard controller for multiple user
- *
- * @return guard
- */
- public function get_guard(){
- if(Auth::guard('sadmin')->check())
- {return "sadmin";}
- elseif(Auth::guard('ofr')->check())
- {return "ofr";}
- }
-
- /**
- * Create a request login controller for multiple user
- *
- * @return guard
- */
-
- public function requestLogin(Request $request) {
- $this->validate($request, [
- 'no_badan' => 'required',
- 'password' => 'required|min:6'
- ]);
-
- $rememberMe = false; $user = '';
- if ($request->has('remember')) {
- $rememberMe = true;
- }
-
- try {
- $message = trans('messages.invalid_login_credentials');
-
- $access = explode ("/", $request->roles_access);
- $user = Staff::where('no_badan', $request->no_badan)->where(function($q) use($access){
- $q->where('roles_access',$access[0])->orWhere('roles_access',$access[1]);
- })->first();
- if (!empty($user)) {
- if(Hash::check($request->password, $user->password)){
-
- // Update last_login & last ip
- $user->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
- $user->last_login_ip = $request->getClientIp();
- $user->authorized = true;
- $user->token_firebase = '';
- $user->save();
-
- // Proceed to Login
- if($user->roles_access == 'sysadmin' || $user->roles_access == 'Ketua Jabatan' || $user->roles_access == "PenguatKuasa"){
- Auth::guard('sadmin')->loginUsingId($user->_id, $rememberMe);
- return redirect('/main/index');
- }else if($user->roles_access == 'psysadmin' || $user->roles_access == 'Pegawai'){
- Auth::guard('ofr')->loginUsingId($user->_id, $rememberMe);
- return redirect('/officer/index');
- }
- }
- }
- }catch (\Exception $e) {
- Log::error(__CLASS__ . "::" . __METHOD__ . " " . $e->getMessage() . "on line" . $e->getLine());
- }
- return redirect('/')->with('error_msg', $message);
- }
-
- public function requestLogout(){
- $id = Auth::guard($this->get_guard())->id();
- $user = Staff::find($id);
-
- // Update last_login & last ip
- $user->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
- $user->last_login_ip = \Request::getClientIp();
- $user->authorized = false;
- $user->save();
-
- // Proceed to Log Out
- $log = Auth::guard($this->get_guard())->logout();
- Session::flush();
- return redirect('/');
- }
- }
|