Skip to content

Commit 3bda63c

Browse files
committed
Login Proxy
1 parent 101fae9 commit 3bda63c

File tree

3 files changed

+120
-30
lines changed

3 files changed

+120
-30
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?php
2+
namespace App\Http\Controllers\API;
3+
4+
use App\Http\Controllers\AppBaseController;
5+
use App\Repositories\UserRepository;
6+
use Illuminate\Http\Request;
7+
use GuzzleHttp\Client;
8+
9+
/**
10+
* Class ItemController
11+
*
12+
* @package App\Http\Controllers\API
13+
*/
14+
class LoginAPIController extends AppBaseController
15+
{
16+
17+
/** @var UserRepository */
18+
private $userRepository;
19+
20+
public function __construct(UserRepository $userRepo)
21+
{
22+
$this->userRepository = $userRepo;
23+
}
24+
25+
public function index(Request $request)
26+
{
27+
$d = $this->userRepository->findWhere([
28+
"email" => $request->get("email")
29+
]);
30+
31+
if (! $d->isEmpty()) {
32+
// proxy
33+
return $this->proxy('password', [
34+
'username' => $request->get("email"),
35+
'password' => $request->get("password")
36+
]);
37+
}
38+
39+
var_dump($d->isEmpty());
40+
die();
41+
}
42+
43+
/**
44+
* Proxy a request to the OAuth server.
45+
*
46+
* @param string $grantType
47+
* what type of grant type should be proxied
48+
* @param array $data
49+
* the data to send to the server
50+
*/
51+
public function proxy($grantType, array $data = [])
52+
{
53+
$data = array_merge($data, [
54+
'client_id' => '3',
55+
'client_secret' => 'fWSn2MuCq3sIcN35bSe4Qq1fpreKi0ndKVS2rZh4',
56+
'grant_type' => 'password',
57+
'scope' => '*'
58+
]);
59+
60+
$result = $this->getAccessToken($data);
61+
if (! $result) {
62+
throw new \Exception("Unauthorized");
63+
}
64+
65+
// Create a refresh token cookie
66+
// $this->cookie->queue(self::REFRESH_TOKEN, $data["refresh_token"], 864000, null, null, false, true); // HttpOnly
67+
68+
return [
69+
'access_token' => $data["access_token"],
70+
'expires_in' => $data["expires_in"]
71+
];
72+
}
73+
74+
private function getAccessToken($data)
75+
{
76+
$http = new Client();
77+
78+
try {
79+
$response = $http->post('http://localhost:8000/oauth/token', [
80+
'form_params' => $data
81+
]);
82+
83+
$result = json_decode((string) $response->getBody(), true);
84+
} catch (\Exception $e) {
85+
return null;
86+
}
87+
return $result;
88+
}
89+
}

app/Http/Controllers/UserController.php

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313

1414
class UserController extends AppBaseController
1515
{
16-
16+
1717
/** @var UserRepository */
1818
private $userRepository;
19-
19+
2020
public function __construct(UserRepository $userRepo)
2121
{
2222
$this->userRepository = $userRepo;
2323
}
24-
24+
2525
/**
2626
* Display a listing of the User.
2727
*
@@ -32,10 +32,10 @@ public function index(Request $request)
3232
{
3333
$this->userRepository->pushCriteria(new RequestCriteria($request));
3434
$users = $this->userRepository->all();
35-
35+
3636
return view('users.index')->with('users', $users);
3737
}
38-
38+
3939
/**
4040
* Show the form for creating a new User.
4141
*
@@ -45,7 +45,7 @@ public function create()
4545
{
4646
return view('users.create');
4747
}
48-
48+
4949
/**
5050
* Store a newly created User in storage.
5151
*
@@ -56,16 +56,16 @@ public function create()
5656
public function store(CreateUserRequest $request)
5757
{
5858
$input = $request->all();
59-
59+
6060
$input["password"] = Hash::make($input["password"]);
61-
61+
6262
$user = $this->userRepository->create($input);
63-
63+
6464
Flash::success('User saved successfully.');
65-
65+
6666
return redirect(route('users.index'));
6767
}
68-
68+
6969
/**
7070
* Display the specified User.
7171
*
@@ -76,16 +76,16 @@ public function store(CreateUserRequest $request)
7676
public function show($id)
7777
{
7878
$user = $this->userRepository->findWithoutFail($id);
79-
79+
8080
if (empty($user)) {
8181
Flash::error('User not found');
82-
82+
8383
return redirect(route('users.index'));
8484
}
85-
85+
8686
return view('users.show')->with('user', $user);
8787
}
88-
88+
8989
/**
9090
* Show the form for editing the specified User.
9191
*
@@ -96,16 +96,16 @@ public function show($id)
9696
public function edit($id)
9797
{
9898
$user = $this->userRepository->findWithoutFail($id);
99-
99+
100100
if (empty($user)) {
101101
Flash::error('User not found');
102-
102+
103103
return redirect(route('users.index'));
104104
}
105-
105+
106106
return view('users.edit')->with('user', $user);
107107
}
108-
108+
109109
/**
110110
* Update the specified User in storage.
111111
*
@@ -117,20 +117,20 @@ public function edit($id)
117117
public function update($id, UpdateUserRequest $request)
118118
{
119119
$user = $this->userRepository->findWithoutFail($id);
120-
120+
121121
if (empty($user)) {
122122
Flash::error('User not found');
123-
123+
124124
return redirect(route('users.index'));
125125
}
126-
126+
127127
$user = $this->userRepository->update($request->all(), $id);
128-
128+
129129
Flash::success('User updated successfully.');
130-
130+
131131
return redirect(route('users.index'));
132132
}
133-
133+
134134
/**
135135
* Remove the specified User from storage.
136136
*
@@ -141,17 +141,17 @@ public function update($id, UpdateUserRequest $request)
141141
public function destroy($id)
142142
{
143143
$user = $this->userRepository->findWithoutFail($id);
144-
144+
145145
if (empty($user)) {
146146
Flash::error('User not found');
147-
147+
148148
return redirect(route('users.index'));
149149
}
150-
150+
151151
$this->userRepository->delete($id);
152-
152+
153153
Flash::success('User deleted successfully.');
154-
154+
155155
return redirect(route('users.index'));
156156
}
157157
}

routes/api.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@
1717
return $request->user();
1818
});
1919

20+
Route::resource('login', 'LoginAPIController');
2021
Route::resource('items', 'ItemAPIController');

0 commit comments

Comments
 (0)