Server IP : 127.0.1.1 / Your IP : 216.73.216.172 Web Server : Apache/2.4.52 (Ubuntu) System : Linux bahcrestlinepropertiesllc 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/bahcrestline/core/app/Http/Controllers/Auth/ |
Upload File : |
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\User; use Exception; use File; use Helper; use Illuminate\Support\Facades\Auth; use Image; use Laravel\Socialite\Facades\Socialite; use Redirect; class SocialAuthController extends Controller { /** * List of providers configured in config/services acts as whitelist * * @var array */ protected $providers = [ 'facebook', 'twitter', 'google', 'linkedin', 'github', 'bitbucket' ]; private $uploadPath = "uploads/users/"; public function __construct() { $this->middleware('guest'); } /** * Redirect to provider for authentication * * @param $driver * @return mixed */ public function redirectToProvider($driver) { if (!$this->isProviderAllowed($driver)) { return $this->sendFailedResponse("{$driver} ".trans('backLang.notCurrentlySupported')); } try { return Socialite::driver($driver)->redirect(); } catch (Exception $e) { // You should show something simple fail message return $this->sendFailedResponse($e->getMessage()); } } /** * Check for provider allowed and services configured * * @param $driver * @return bool */ private function isProviderAllowed($driver) { return in_array($driver, $this->providers) && config()->has("services.{$driver}"); } /** * Send a failed response with a msg * * @param null $msg * @return \Illuminate\Http\RedirectResponse */ protected function sendFailedResponse($msg = null) { return Redirect::to(url('/login')) ->withErrors(['msg' => $msg ?: trans('backLang.UnableToLogin')]); } /** * Handle response of authentication redirect callback * * @param $driver * @return \Illuminate\Http\RedirectResponse */ public function handleProviderCallback($driver) { try { $user = Socialite::driver($driver)->user(); } catch (Exception $e) { return $this->sendFailedResponse($e->getMessage()); } // check for email in returned user return empty($user->email) ? $this->sendFailedResponse(trans('backLang.NoEmailReturned')." {$driver}") : $this->loginOrCreateAccount($user, $driver); } protected function loginOrCreateAccount($providerUser, $driver) { // check for already has account $user = User::where('email', $providerUser->getEmail())->first(); // if user already found if ($user) { if ($user->photo != "") { // Delete old Avatar File::delete($this->getUploadPath() . $user->photo); } $photo_filename = ""; if ($providerUser->getAvatar() != "") { // Save Avatar to uploads folder $avatar_path = $providerUser->getAvatar(); $photo_filename = time() . rand(1111, 9999); $extension = pathinfo($avatar_path, PATHINFO_EXTENSION); if ($extension == 0 || $extension == "") { $extension = "png"; } $photo_filename = $photo_filename . '.' . $extension; //get file content from url $file_contents = file_get_contents($avatar_path); $save = file_put_contents($this->getUploadPath() . $photo_filename, $file_contents); if (!$save) { $photo_filename = ""; } } // update the avatar and provider that might have changed $user->update([ 'photo' => $photo_filename, 'provider' => $driver, 'provider_id' => $providerUser->id, 'access_token' => $providerUser->token ]); } else { $photo_filename = ""; if ($providerUser->getAvatar() != "") { // Save Avatar to uploads folder $avatar_path = $providerUser->getAvatar(); $photo_filename = time() . rand(1111, 9999); $extension = pathinfo($avatar_path, PATHINFO_EXTENSION); if ($extension == 0 || $extension == "") { $extension = "png"; } $photo_filename = $photo_filename . '.' . $extension; //get file content from url $file_contents = file_get_contents($avatar_path); $save = file_put_contents($this->getUploadPath() . $photo_filename, $file_contents); if (!$save) { $photo_filename = ""; } } // create a new user $user = User::create([ 'name' => $providerUser->getName(), 'email' => $providerUser->getEmail(), 'photo' => $photo_filename, 'permissions_id' => Helper::GeneralWebmasterSettings("permission_group"), 'status' => true, 'provider' => $driver, 'provider_id' => $providerUser->getId(), 'access_token' => $providerUser->token, // user can use reset password to create a password 'password' => '' ]); } // login the user Auth::login($user, true); return $this->sendSuccessResponse(); } public function getUploadPath() { return $this->uploadPath; } public function setUploadPath($uploadPath) { $this->uploadPath = Config::get('app.APP_URL') . $uploadPath; } /** * Send a successful response * * @return \Illuminate\Http\RedirectResponse */ protected function sendSuccessResponse() { return redirect()->intended('home'); } }