Untitled
unknown
plain_text
2 years ago
4.3 kB
10
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