Advanced Web Server Manager
Complete File Manager & Terminal - Standalone Version
By Sid Gifari | Gifari Industries
Current path:
/
/
home
/
qtdcvxyp
/
karir.star4hire.com
/
app
/
Http
/
Controllers
/
Auth
✏️
Editing: LoginController.php
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\UserMeta; use Carbon\Carbon; use Illuminate\Auth\Events\Registered; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; use Laravel\Socialite\Facades\Socialite; use Matrix\Exception; use Modules\Candidate\Models\Candidate; use Modules\Company\Models\Company; use Modules\User\Events\SendMailUserRegistered; use App\User; use Illuminate\Support\Facades\Hash; 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 = '/user/profile'; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest')->except('logout'); } public function redirectTo() { if(is_admin()){ return '/admin'; }else{ return $this->redirectTo; } } public function showLoginForm() { return view('auth.login',['page_title'=> __("Login")]); } public function socialLogin($provider, Request $request) { session(['bc_register_type' => $request->get('type' ,'')]); $this->initConfigs($provider); $redirectTo = request()->server('HTTP_REFERER', url('/')); session()->put('url.intended', $redirectTo); return Socialite::driver($provider)->redirect(); } protected function initConfigs($provider) { switch($provider){ case "facebook": case "google": case "twitter": case "linkedin": config()->set([ 'services.'.$provider.'.client_id'=>setting_item($provider.'_client_id'), 'services.'.$provider.'.client_secret'=>setting_item($provider.'_client_secret'), 'services.'.$provider.'.redirect'=>'/social-callback/'.$provider, ]); break; } } public function socialCallBack($provider) { try { $this->initConfigs($provider); $user = Socialite::driver($provider)->user(); $redirectTo = $this->getRedirectTo(); session()->forget('url.intended'); if (empty($user)) { return redirect()->to('login')->with('error', __('Can not authorize')); } $existUser = User::getUserBySocialId($provider, $user->getId()); if (empty($existUser)) { $meta = UserMeta::query()->where('name', 'social_' . $provider . '_id')->where('val', $user->getId())->first(); if (!empty($meta)) { $meta->delete(); } // if we can not get email, then fake email will be generated $email = $user->getEmail(); $email = $email ?: $user->getId() . '@' . $provider; $userByEmail = User::query()->where('email', $email)->first(); if (!empty($userByEmail)) { return redirect()->route('login')->with('error', __('Email :email exists. Can not register new account with your social email', ['email' => $email])); } // Create New User $realUser = new User(); $realUser->email = $email; $realUser->password = Hash::make(uniqid() . time()); $realUser->name = $user->getName(); $realUser->first_name = $user->getName(); $realUser->status = 'publish'; $realUser->email_verified_at = Carbon::now(); $realUser->save(); $realUser->addMeta('social_' . $provider . '_id', $user->getId()); $realUser->addMeta('social_' . $provider . '_email', $email); $realUser->addMeta('social_' . $provider . '_name', $user->getName()); $realUser->addMeta('social_' . $provider . '_avatar', $user->getAvatar()); $realUser->addMeta('social_meta_avatar', $user->getAvatar()); event(new Registered($realUser)); if(session('session') == 'employer'){ $realUser->assignRole('employer'); $company = new Company(); $company_data = [ 'name' => $realUser->name, 'email' => $realUser->email, 'owner_id' => $realUser->id, 'status'=>'draft' ]; $company->fillByAttr(array_keys($company_data),$company_data); $company->save(); }else{ $realUser->assignRole('candidate'); $candidate = new Candidate(); $candidate_data = [ 'id'=> $realUser->id, 'title'=>$user->display_name ?? ($user->nickname ?? "") ]; $candidate->fillByAttr(array_keys($candidate_data),$candidate_data); $candidate->save(); } try { event(new SendMailUserRegistered($realUser)); } catch (Exception $exception) { Log::warning("SendMailUserRegistered: " . $exception->getMessage()); } // Login with user Auth::login($realUser); return redirect($redirectTo); } else { if ($existUser->deleted == 1) { return redirect()->route('login')->with('error', __('User blocked')); } if (in_array($existUser->status, ['blocked'])) { return redirect()->route('login')->with('error', __('Your account has been blocked')); } Auth::login($existUser); return redirect($redirectTo); } }catch (\Exception $exception) { $message = $exception->getMessage(); if(empty($message) and request()->get('error_message')) $message = request()->get('error_message'); if(empty($message)) $message = $exception->getCode(); return redirect()->route('login')->with('error',$message); } } public function getRedirectTo() { $url = session()->get('url.intended', url('/')); session()->forget('url.intended'); if ($url == url('/') or $url == route('login') or $url == route('auth.register')) { $url = url('/'); } return $url; } }
💾 Save Changes
❌ Cancel