Untitled
unknown
plain_text
9 months ago
4.3 kB
3
Indexable
<?php namespace App\Http\Controllers; use App\Models\User; use App\Models\UserActivation; use App\Providers\SadayanaProvider; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Laravel\Socialite\Facades\Socialite; class AuthController extends Controller { /** * Show layout login * * @return \Illuminate\Http\Response */ function login() { return view('auth.login.index'); } /** * Melakukan input data login * * @param \Illuminate\Http\Request $request * @param Request $req * @return \Illuminate\Http\Response */ function authenticate(Request $request) { $credentials = $request->validate([ 'email' => ['required'], 'password' => ['required'] ]); try { if (Auth::attempt($credentials)) { $user = User::where('email', $request->email)->first(); if ($user->is_active === 0) { Auth::logout(); $request->session()->invalidate(); return redirect()->route('user.activation', ['username' => $user->username]); } session([ 'name' => $user->name, 'username' => $user->username ]); $request->session()->regenerate(); return redirect()->intended('/'); } else { return back()->withErrors([ 'login' => 'Data yang Anda masukkan salah. Apabila sebelumnya Anda masuk menggunakan SSO Bandung Sadayana, silahkan masuk melalui Bandung Sadayana', ])->onlyInput('email'); } } catch (\Throwable $th) { return back()->withErrors([ 'login' => 'Apabila sebelumnya Anda masuk menggunakan SSO Bandung Sadayana, silahkan masuk melalui Bandung Sadayana', ])->onlyInput('email'); } } /** * Redirect sadayana * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function redirect($provider) { // 'bandung-sso' return Socialite::driver($provider)->redirect(); } /** * Callback sadayana * @return \Illuminate\Http\RedirectResponse */ public function callback($provider) { try { $sadayana = Socialite::driver($provider)->stateless()->user(); $userFromSadayana = $sadayana->user; $user = User::where('bandung_sso_id', $userFromSadayana['id'])->first(); if (!$user) { $user = User::create([ 'bandung_sso_id' => $userFromSadayana['id'], 'name' => $userFromSadayana['nickname'], 'username' => $userFromSadayana['username'], 'email' => $userFromSadayana['email'], 'phone_number' => $userFromSadayana['basic']['phone'], 'photo_profile' => $userFromSadayana['basic']['picture'], ]); $user->assignRole('contributor'); UserActivation::create([ 'user_id' => $user->id ]); session()->invalidate(); return redirect()->route('user.activation', ['username' => $user->username]); // auth('web')->login($user); // session()->regenerate(); // return redirect('/'); } if ($user->is_active === 0 || $user->activation_status->id_card == null || $user->activation_status->bank_passbook == null) return redirect()->route('user.activation', ['username' => $user->username]); auth('web')->login($user); session()->regenerate(); return redirect('/'); } catch (\Throwable $th) { return back()->withErrors([ 'email' => 'Terjadi kesalahan pada Sadayana', ])->onlyInput('email'); } } /** * @param $provider * @return \Illuminate\Http\RedirectResponse */ public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/'); } }
Editor is loading...
Leave a Comment