Skip to content
Snippets Groups Projects
Select Git revision
  • ed6c0987db7fe4b71522bcd2d9b815390c638adc
  • master default protected
  • new
  • ask_answer_question
  • test_ci
  • login_member
  • qna_backup
  • askQuestion
  • dashboard-member
  • testing_sprint_3
  • postarticle
  • MergeSprint2
  • loginAdmin
  • addmember
  • profile
15 results

SocialAccountsController.php

Blame
  • Forked from IF3250-2018-K01-I-4 / WebAlumniSTEI
    Source project has a limited visibility.
    SocialAccountsController.php 3.51 KiB
    <?php
    
    namespace App\Http\Controllers\Auth;
    use App\Http\Controllers\Controller;
    use App\SocialAccountService;
    
    use Socialite;
    
    class SocialAccountsController extends Controller
    {
    
        public function __construct()
        {
          $this->middleware('guest:member', ['except' => ['handleProviderCallback','logout']]);
        }
    
    
        public function index()
        {
            return view('members.login');
        }
    
        /**
         * Redirect the user to the Linkedin authentication page.
         *
         * @return \Illuminate\Http\Response
         */
        public function redirectToProvider($provider)
        {
            return Socialite::driver($provider)->redirect();
        }
    
        /**
         * Obtain the user information from Linkedin.
         *
         * @return \Illuminate\Http\Response
         */
        public function handleProviderCallback(SocialAccountService $accountService, $provider)
        {
            //dd($_GET);
            //dd($accountService->user());
            //dd(auth()->guard('member')->user());
            try {
                //$user = Socialite::with($provider)->user();
                $user = Socialite::with($provider)->setHttpClient(new \GuzzleHttp\Client(['curl' => array(CURLOPT_PROXY => '', CURLOPT_PROXYPORT => '', CURLOPT_PROXYUSERPWD => '', CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2)]))->user();
    //dd(Socialite::with($provider)->setHttpClient(new \GuzzleHttp\Client(['curl' => array(CURLOPT_PROXY => 'cache.itb.ac.id', CURLOPT_PROXYPORT => 8080, CURLOPT_PROXYUSERPWD => 'yowinarto:06561330', CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2
    //)]))->user());
            } catch (Exception $e) {
                return redirect('/login');
            }
            if(auth()->guard('member')->user() != null){
                if($provider == 'google'){
                    $linkStatus = $accountService->editGoogleLink(
                        $user,
                        auth()->guard('member')->user()
                    );
                }else{
                    $linkStatus = $accountService->findOrLink(
                        $user,
                        auth()->guard('member')->user(),
                        $provider
                    );
                    //print_r($linkStatus); 
                }
                if($linkStatus)
                    return redirect()->to('/members/'.auth()->guard('member')->user()->id)->with('success',ucfirst($provider).' account successfully linked');
                else
                    return redirect()->to('/members/'.auth()->guard('member')->user()->id)->with('error',ucfirst($provider).' account already linked');
    
            } else {
                $authUser = $accountService->findOrCreate(
                    $user,
                    $provider
                );
                //dd($authUser);
                switch($authUser->id){
                    case -1:
                        return redirect()->to('/login')->with('error','Email not recorded in system');
                    case -2:
                        return redirect()->to('/login')->with('success', 'Activation mail has been sent to your email'); 
                    case -3:
                        return redirect()->to('/login')->with('error', 'Please activate your account. <a href="' . route('auth.verify.resend') . '?email=' . $user->email .'">Resend?</a>'); 
                    default:
                        auth()->guard('member')->login($authUser, true);
                        return redirect()->to('/');
                }
            }
    
            //auth()->guard('member')->login($authUser, true);
            //dd(auth()->guard('member')->user());
            //return redirect()->to('/');
        }
    
        public function logout()
        {
            auth()->guard('member')->logout();
            return redirect('/login');
        }
    }