input("username"); $password = $request->input('password'); // dd($username." ".$password); $result = $this->getTokenByPasswordGrant($username,$password); // dd($result); // return $result; // return view("home"); if($result){ $userModel = User::where('username', "$username")->first(); // $userModel = $users = DB::table('users')->where('username', '=', "$username")->get(); // dd($userModel); Auth::login($userModel); return view("home"); }else{ return view("auth.login"); } } public function requestAuth () { $query = http_build_query([ 'client_id' => env("CLIENT_ID"), 'redirect_uri' => env("REDIRECT_URI_AUTHORIZATION_CODE"), //redirect ของเว็บนี้ ที่ให้ปลื้มแก้ครับ 'response_type' => 'code', 'scope' => '', ]); // return redirect(env("BACKEND_IP").'/api/oauth/getcode?'. $query); // dd(env("BACKEND_IP").'/api/oauth/getcode?'. $query); return redirect(env("BACKEND_IP").'/api/oauth/getcode?'. $query); } public function callbackAuth(Request $request) { // dd('call back'); $http = new Client; if ($request->code) { //dd($request->code); // $response = $http->post('http://dev.rita.backend/oauth/token', [ $response = $http->post(env("BACKEND_IP")."/oauth/token", [ 'form_params' => [ 'grant_type' => 'authorization_code', 'client_id' => env("CLIENT_ID"), 'client_secret' => env("CLIENT_SECRET"), 'redirect_uri' => env("REDIRECT_URI_AUTHORIZATION_CODE"), 'code' => $request->code, 'scope' => '', ], ]); $json = json_decode($response->getBody(), true); $accessToken = $json['access_token']; // dd($accessToken); if($accessToken){ // $userModel = User::where('username', "$username")->first(); // // $userModel = $users = DB::table('users')->where('username', '=', "$username")->get(); // // dd($userModel); // Auth::login($userModel); // return view("home"); $accountInfo = $this->getAccount($accessToken); dd($accountInfo); } return $accountInfo; } else { return response()->json(['error' => request('error')]); } } public function getTokenByPasswordGrant($username,$password){ // return "test"; // $username = $request->input("username"); // $password = $request->input('password'); // dd($username." ".$password ); // dd(env('BACKEND_IP')); $client = new Client(['base_uri' => env('BACKEND_IP'), 'verify' => false]); // $client = new Client(); // dd($client); $response = $client->post('/api/oauth/getpwd', [ 'form_params' => [ 'grant_type' => 'password', 'client_id' => "6", 'client_secret' => "eZlHFvbWHK3L7AkwW7xNRxRPtJcgfiHrCp0KuzDp", 'username' => $username, 'password' => $password, // 'scope' => '', ], 'http_errors' => false, ]); // dd($client); // dd($response); // dd(json_decode((string)$response->getbody(),true)); if ($response->getStatusCode() == 200) { $accessToken = json_decode((string) $response->getBody(), true)['access_token']; session(["accessToken"=>$accessToken]); // dd(session("accessToken")); $this->getUserAndCreate($accessToken, $username, $password); return true; } // return $response->getStatusCode() == 200 ? true : false; return false; } // private function logingIn($username) // { // $userModel = User::where('username', $username)->first(); // Auth::login($userModel); // $this->sendLoginResponse(\request())->throwResponse(); // } public function getAccount($accessToken){ $client = new Client(['base_uri' => env('BACKEND_IP'), "verify" => false]); $response = $client->get('/api/account', [ 'headers' => ['Authorization' => 'Bearer ' . $accessToken], 'http_errors' => false, ]); // dd($jsonResponse = json_decode($response->getBody(), true)); $account = json_decode($response->getBody(), true); return $account; } public function getAccessToken(){ return session("accessToken"); } private function getUserAndCreate($accessToken, $username, $password) { // dd("in get user and create"); // dd($jsonResponse = json_decode($response->getBody(), true)); $jsonResponse = $this->getAccount($accessToken); // dd($jsonResponse); $userModel = User::where('username', "$username")->first(); // dd($userModel); // User::where('username', "$username")->update(["updated_at" => Carbon::now()]); if (!$userModel) { $userModel = new User(); $userModel->id = Uuid::generate()->string; $userModel->username = $username; $userModel->password = bcrypt($password); $userModel->id_passport = $jsonResponse['id_card_num']; $userModel->name = $jsonResponse['first_name_eng']; $userModel->surname = $jsonResponse['last_name_eng']; $userModel->birth_date = $jsonResponse['birth_date']; $userModel->phone = $jsonResponse['mobile'][0]['mobile_no']; $userModel->nameTH = $jsonResponse['first_name_th']; $userModel->surnameTH = $jsonResponse['last_name_th']; $userModel->has_onecard = 'I'; // $userModel->remember_token = $accessToken; $userModel->save(); } } public function loginWithPassGrant(){ return view("login"); } }