ok
Direktori : /home2/selectio/www/3-idiots/app/Http/Controllers/api/v1/auth/ |
Current File : /home2/selectio/www/3-idiots/app/Http/Controllers/api/v1/auth/SocialAuthController.php |
<?php namespace App\Http\Controllers\api\v1\auth; use App\CPU\Helpers; use App\Http\Controllers\Controller; use App\User; use GuzzleHttp\Client; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; use function App\CPU\translate; use App\Model\BusinessSetting; class SocialAuthController extends Controller { public function social_login(Request $request) { $validator = Validator::make($request->all(), [ 'token' => 'required', 'unique_id' => 'required', 'email' => 'required', 'medium' => 'required|in:google,facebook,apple', ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)], 403); } $client = new Client(); $token = $request['token']; $email = $request['email']; $unique_id = $request['unique_id']; try { if ($request['medium'] == 'google') { $res = $client->request('GET', 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' . $token); $data = json_decode($res->getBody()->getContents(), true); } elseif ($request['medium'] == 'facebook') { $res = $client->request('GET', 'https://graph.facebook.com/' . $unique_id . '?access_token=' . $token . '&&fields=name,email'); $data = json_decode($res->getBody()->getContents(), true); } elseif ($request['medium'] == 'apple') { // $res = $client->request('GET', 'https://graph.facebook.com/' . $unique_id . '?access_token=' . $token . '&&fields=name,email'); // $data = json_decode($res->getBody()->getContents(), true); $socialLogin = BusinessSetting::where('type', 'social_login')->first(); $client_id = ''; $client_secret = ''; foreach(json_decode($socialLogin['value'], true) as $key => $social){ if($social['login_medium'] == 'apple'){ $client_id = $social['service_id']; $client_secret = $social['client_secret']; } } $apple_data = [ 'grant_type' => 'authorization_code', 'redirect_uri' => 'www.test.com', 'client_id' => $client_id, 'client_secret' => $client_secret, 'code' => $request['token'] ]; $response = Request::create('/oauth/token', 'POST', $apple_data); $data = json_decode($response->getBody()->getContent(), true); dd($data); } } catch (\Exception $exception) { return response()->json(['error' => 'wrong credential.']); } if (strcmp($email, $data['email']) === 0) { $name = explode(' ', $data['name']); if (count($name) > 1) { $fast_name = implode(" ", array_slice($name, 0, -1)); $last_name = end($name); } else { $fast_name = implode(" ", $name); $last_name = ''; } $user = User::where('email', $email)->first(); if (isset($user) == false) { $user = User::create([ 'f_name' => $fast_name, 'l_name' => $last_name, 'email' => $email, 'phone' => '', 'password' => bcrypt($data['id']), 'is_active' => 1, 'login_medium' => $request['medium'], 'social_id' => $data['id'], 'is_phone_verified' => 0, 'is_email_verified' => 1, 'temporary_token' => Str::random(40) ]); } else { $user->temporary_token = Str::random(40); $user->save(); } if(!isset($user->phone)) { return response()->json([ 'token_type' => 'update phone number', 'temporary_token' => $user->temporary_token ]); } $token = self::login_process_passport($user, $user->email, $data['id']); if ($token != null) { return response()->json(['token' => $token]); } return response()->json(['error_message' => translate('Customer_not_found_or_Account_has_been_suspended')]); } return response()->json(['error' => translate('email_does_not_match')]); } public static function login_process_passport($user, $email, $password) { $data = [ 'email' => $email, 'password' => $password ]; if (isset($user) && $user->is_active && auth()->attempt($data)) { $token = auth()->user()->createToken('LaravelAuthApp')->accessToken; } else { $token = null; } return $token; } public function update_phone(Request $request) { $validator = Validator::make($request->all(), [ 'temporary_token' => 'required', 'phone' => 'required|min:11|max:14' ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)], 403); } $user = User::where(['temporary_token' => $request->temporary_token])->first(); $user->phone = $request->phone; $user->save(); $phone_verification = BusinessSetting::where('type', 'phone_verification')->first(); if($phone_verification->value == 1) { return response()->json([ 'token_type' => 'phone verification on', 'temporary_token' => $request->temporary_token ]); }else{ return response()->json(['message' =>'Phone number updated successfully']); } } }