Social login API in Laravel Full code

 First, create route

Route::post('/sociallogin', 'Auth\LoginController@sociallogin');

look like in route folder Api.php

next setup 

create a login controller in Auth folder

write a function look like this

write the code according my project condition




public function sociallogin(Request $request) {

      

        $host = $request->getHttpHost();

        $isvalidateuser=false;

        $user=null;

        $data=$request->all();

        $Isnotificaion=1;

        // $rUrl=url()

        

        $datatype=$data['type'];

        $access_token=$data['access_token'];

        $resp=null;

        

         if($datatype=='google')

         {

          $rUrl = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token='.$access_token;

         }

         else

         {

          $rUrl = 'https://graph.facebook.com/me?fields=id,name,email,first_name&access_token='.$access_token;

         }


          $ch = curl_init();

          $timeout = 60;

          curl_setopt($ch,CURLOPT_URL,$rUrl);

          curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

          curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);

          $resp = curl_exec($ch);

          $newuser=0;


    if(!curl_errno($ch))

    {

            

        $json = json_decode($resp, true);

        if(array_key_exists('email', $json))

        {

            $email=$json['email'];

           

            if($email!=null && $email==$data['email'])

            {   

               //check if user exist

              $name=$json['name'];

              

              $user = User::where('email',$data['email'])->whereIn('user_role', [0])->first();

              

               if( $user==null)

               {

                 $hashed_random_password = Hash::make(str_random(8));

                   User::create([

                    'name' => $name,

                    'email' => $email,

                    'password' =>$hashed_random_password,

                  ]);

   $newuser=1;  

              

                   $userid=User::where(['email'=> $data['email'],'status' => 1])->whereIn('user_role', [0])->first();

                   $currenttime = Carbon\Carbon::now();

                   $cdt = encrypt($currenttime);

                   try{

                 Mail::send(['html'=>'mail'],  

                    ['status' => 16,'name' => $userid['name'],'email' =>urlencode($userid['email']),'id'=>$userid->id,'host'=>$host,'expiredt'=> $cdt], function($message) use ($userid) {

                    $message->to($userid->email)->subject

                    ('Confirm your email address');

                    $message->from('admin@jobtiviti.com','Jobtiviti');

                  });

               }

               catch(Exception $exception){

                           $expc=  $exception->getMessage();

                           $path = url()->current();

                           $url = $request->fullUrl();

                           $parentmethod=$request->root();

                          $datetime=Carbon\Carbon::now();

                          ExceptionHandle::excetionStore($expc,$path,$url,$parentmethod,$datetime);

                       }

                 }

                 else{

                    $userDelete = User::where(['email'=>$data['email'],'status'=>-1])->whereIn('user_role', [0])->orderby('updated_at','desc')->first();

                    if(!empty($userDelete) && $userDelete!=null) {

                        $UpdateDate = date('Y-m-d', strtotime($userDelete['updated_at']));

                        $datework = Carbon\Carbon::parse($UpdateDate);

                        $now = Carbon\Carbon::now()->format('Y-m-d');

                        $deleteDays = $datework->diffInDays($now);

                         if($deleteDays>14){

                                $hashed_random_password = Hash::make(str_random(8));

                                User::create([

                                 'name' => $name,

                                 'email' => $email,

                                 'password' =>$hashed_random_password,

                               ]);

                                $newuser=1;  

                           

                                $userid=User::where(['email'=> $data['email'],'status' => 1])->whereIn('user_role', [0])->first();

                                $currenttime = Carbon\Carbon::now();

                                $cdt = encrypt($currenttime);

                                try{

                              Mail::send(['html'=>'mail'],  

                                 ['status' => 16,'name' => $userid['name'],'email' => urlencode($userid['email']),'id'=>$userid->id,'host'=>$host,'expiredt'=> $cdt], function($message) use ($userid) {

                                 $message->to($userid->email)->subject

                                 ('Confirm your email address');

                                 $message->from('admin@jobtiviti.com','Jobtiviti');

                               });

                            }

                                 catch(Exception $exception){

                                 $expc=  $exception->getMessage();

                                 $path = url()->current();

                                 $url = $request->fullUrl();

                                 $parentmethod=$request->root();

                                $datetime=Carbon\Carbon::now();

                                ExceptionHandle::excetionStore($expc,$path,$url,$parentmethod,$datetime);

                               }

                            }

                    }

                 }


              }

              else

              {

                  return response()->json([

                          'data' => array('message' => 'Login failed'),

                          'status' => 'error'

                  ]);

              }

          }

          else

          {

              return response()->json([

                      'data' => array('message' => 'Login failed'),

                      'status' => 'error'

              ]);

          }

      }

      

      $user = User::where(['email'=> $data['email'],'status' => 1])->whereIn('user_role', [0])->first();

      if ( $user!=null) 

      {


         //start device_id code

               

        if(isset($data['device_token']))

        {

                  //dd($data['device_token']);

                $user_devicemap=UserDevice::where('user_id','=',$user->id)->first();

                 

                if(isset($user_devicemap) && $user_devicemap!=null)

                {

                     //update all set all user to null with current device_id

                     $mapdata=UserDevice::where('device_token','=',$data['device_token'])->where('user_id','<>',$user->id)->update(array('device_token' => null));

                                    //update device_id to cuurent uset;

                                    //update device_id to cuurent uset;

                    $Isnotificaion=$user_devicemap->is_enable;

                    if($user_devicemap->is_enable==1)

                    {

                          $user_devicemap->device_token=$data["device_token"];

                          $user_devicemap->save();

                    }

                 }

                  else

                  {

                      //update all set all user to null with current device_id


                  $mapdata=UserDevice::where('device_token',$data['device_token'])->update(array('device_token' => null));

                                               //insert new entry for current user;

                  $map_data= UserDevice::create([

                              'user_id' =>$user->id,

                              'is_enable' => 1,

                              'device_token' =>$data["device_token"],

                              ]);

                  }

            }

          if(!is_null($user['referrer_type'])  )

          {

    

     $photoURL = url("user_photos");                  

                  $user->generateToken();

  $userId = $user->id;

                   $userData = $user->toArray();

//if( is_null($user['university']) || $user['university']==0 )

               // {


                 //   $univ=UniversityMaps::where('user_id',$userId)->first();

                //    if(!is_null($univ))

                 //   {

                  //      $userData['university']=$univ['id'];

                       

                  //  }

                // } 

 

                    $userData["newuser"]=$newuser;

                    $userData["referrer_type"]=$user['referrer_type'];

              if ($userData['photo']) {

                  $temp = $userData['photo'];

                  $userData['photo'] = $photoURL . "/" . $temp;

              }

           // if ($userData['graduation_year']!= 0 && $userData['university']!=0 ) {


                      return response()->json([

                          'data' => $userData,

                           'status' => 'success'

              ]);         

              // } else {

              //     $data1= User::select('id','name','email','graduation_year','university','aspiration_message','referrer_type')->where(['email'=> $data['email'],'status' => 1])->whereIn('user_role', [0])->first();

              //     $data1['newuser']=$newuser;

              //  return response()->json([

              //            'data' =>$data1,

               //          'status' => 'success'

              //  ]);

             // }

          }

          else

          {

            $data1= User::select('id','name','email','graduation_year','university','aspiration_message','referrer_type')->where(['email'=> $data['email'],'status' => 1])->whereIn('user_role', [0])->first();

            $data1['newuser']=$newuser;

             return response()->json([

                           'data' => $data1,

                           'status' => 'success'

                ]);

           }

       

            

    } 

    else 

    {

            $userexist = User::where(['email'=>$data['email'],'status' => -1])->whereIn('user_role', [0])->orderby('updated_at','desc')->first();

            if($userexist!=null)

            {

                if(isset($data['device_token']))

                {

                          //dd($data['device_token']);

                        $user_devicemap=UserDevice::where('user_id','=',$userexist->id)->first();

                         

                        if(isset($user_devicemap) && $user_devicemap!=null)

                        {

                             //update all set all user to null with current device_id

                             $mapdata=UserDevice::where('device_token','=',$data['device_token'])->where('user_id','<>',$userexist->id)->update(array('device_token' => null));

                                            //update device_id to cuurent uset;

                                            //update device_id to cuurent uset;

                            $Isnotificaion=$user_devicemap->is_enable;

                            if($user_devicemap->is_enable==1)

                            {

                                  $user_devicemap->device_token=$data["device_token"];

                                  $user_devicemap->save();

                            }

                         }

                          else

                          {

                              //update all set all user to null with current device_id

        

                          $mapdata=UserDevice::where('device_token',$data['device_token'])->update(array('device_token' => null));

                                                       //insert new entry for current user;

                          $map_data= UserDevice::create([

                                      'user_id' =>$userexist->id,

                                      'is_enable' => 1,

                                      'device_token' =>$data["device_token"],

                                      ]);

                          }

                    }

        

                    //end device_id code

        

                    $photoURL = url("user_photos");

                    $userId = $userexist->id;

                        

                  if(!is_null($userexist['graduation_year']) && !is_null($userexist['university']))

                  {

                      $userData = $userexist->toArray();

                      $update_at=$userexist->updated_at;

                      $datefrom = date('d M Y H:i', strtotime($update_at));

                      $userData['DeletedDate']=$datefrom;

                      $userData["newuser"]=$newuser;

                      $userData["referrer_type"]=$userexist['referrer_type'];

  if($userData['university']==null || $userData['university']==0 )

                        {

        

                            $univ=UniversityMaps::where('user_id',$userId)->first();

                            if($univ!=null)

                            {

                                $userData->university=$univ['id'];

                               

                            }

                         }

                      if ($userData['photo']) {

                          $temp = $userData['photo'];

                          $userData['photo'] = $photoURL . "/" . $temp;

                      }

                    if ($userData['graduation_year']!= 0 && $userData['university']!=0) {

        

                              return response()->json([

                                  'data' => $userData,

                                   'status' => 'success'

                      ]);         

                       } else {

                        return response()->json([

                                   'data' => array('message' => 'Login failed.'),

                                    'status' => 'error'

                        ]);

                      }

                  }

                  else

                  {

                    $data1= User::select('id','name','email','graduation_year','university','aspiration_message','referrer_type')->where(['email'=> $data['email'],'status' => 1])->whereIn('user_role', [0])->first();

                    $data1['newuser']=$newuser;

                     return response()->json([

                                   'data' =>$data1,

                                   'status' => 'success'

                        ]);

                   }

            }

            else

            {

               return response()->json([

                            'data' => 'Login Email or Password are incorrect,

                            'status' => 'error'

                ]);

            }

           

        

    }

        return $this->sendFailedLoginResponse($request); 

 }


Social login API in Laravel Full code Social login API in Laravel Full code Reviewed by Bugs Solutions on December 21, 2022 Rating: 5

No comments