Skip to content

Commit 54581a9

Browse files
committed
Moved IP & browser resolvers into the manager and added methods to interface.
1 parent 6977f50 commit 54581a9

File tree

3 files changed

+47
-31
lines changed

3 files changed

+47
-31
lines changed

src/AuthManager.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Illuminate\Cookie\CookieJar;
1010
use Illuminate\Http\Request;
1111
use Symfony\Component\HttpFoundation\Response;
12+
use UAParser\Parser;
1213

1314
class AuthManager implements ManagerContract
1415
{
@@ -110,4 +111,26 @@ public function fingerprint(Request $request)
110111
$request
111112
);
112113
}
114+
115+
public function resolveBrowserNameFromRequest(Request $request)
116+
{
117+
$parser = Parser::create();
118+
119+
$result = $parser->parse($request->server->get('HTTP_USER_AGENT'));
120+
121+
return $result->ua->family . ' (' . $result->os->family . ')';
122+
}
123+
124+
public function resolveAddressFromRequest(Request $request)
125+
{
126+
if (!empty($request->server->get('HTTP_CLIENT_IP'))) {
127+
return $request->server->get('HTTP_CLIENT_IP');
128+
}
129+
130+
if (!empty($request->server->get('HTTP_X_FORWARDED_FOR'))) {
131+
return $request->server->get('HTTP_X_FORWARDED_FOR');
132+
}
133+
134+
return $request->server->get('REMOTE_ADDR');
135+
}
113136
}

src/Contracts/AuthManager.php

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,26 @@ interface AuthManager
99
{
1010
const NO_AUTH_REQUEST = 'no_auth_request';
1111

12-
public function challenge(HasDeviceAuthorizations $user, $fingerprint, $browser, $ip);
13-
14-
public function verify(HasDeviceAuthorizations $user, $fingerprint, $token);
15-
16-
public function setEventDispatcher(EventDispatcher $events);
17-
18-
public function getEventDispatcher();
12+
public function requestAuthorization();
13+
14+
public function requiresAuthorization();
15+
16+
public function revokeAuthorizationRequest();
17+
18+
public function setDeviceTokenCookie(Response $response, $token);
19+
20+
public function getDeviceTokenCookie(Request $request);
21+
22+
public function setClientFingerprint(Request $request, $fingerprint);
23+
24+
public function forgetClientFingerprint(Request $request);
25+
26+
public function isAuthorized(Request $request);
27+
28+
public function fingerprint(Request $request);
29+
30+
public function resolveBrowserNameFromRequest(Request $request);
31+
32+
public function resolveAddressFromRequest(Request $request);
33+
1934
}

src/Http/Traits/DeviceAuthorization.php

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ public function challenge(Request $request)
2020

2121
$fingerprint = $this->manager()->fingerprint($request);
2222

23-
$browser = $this->resolveBrowserNameFromRequest($request);
23+
$browser = $this->manager()->resolveBrowserFromRequest($request);
2424

25-
$ip = $this->resolveAddressFromRequest($request);
25+
$ip = $this->manager()->resolveAddressFromRequest($request);
2626

2727
$response = $this->broker()->challenge(
2828
$request->user(), $fingerprint, $browser, $ip
@@ -107,28 +107,6 @@ protected function routeResponse($response)
107107
throw new DeviceAuthorizationLogicException;
108108
}
109109

110-
protected function resolveBrowserNameFromRequest(Request $request)
111-
{
112-
$parser = Parser::create();
113-
114-
$result = $parser->parse($request->server->get('HTTP_USER_AGENT'));
115-
116-
return $result->ua->family . ' (' . $result->os->family . ')';
117-
}
118-
119-
protected function resolveAddressFromRequest(Request $request)
120-
{
121-
if (!empty($request->server->get('HTTP_CLIENT_IP'))) {
122-
return $request->server->get('HTTP_CLIENT_IP');
123-
}
124-
125-
if (!empty($request->server->get('HTTP_X_FORWARDED_FOR'))) {
126-
return $request->server->get('HTTP_X_FORWARDED_FOR');
127-
}
128-
129-
return $request->server->get('REMOTE_ADDR');
130-
}
131-
132110
public function manager()
133111
{
134112
return app('auth.device');

0 commit comments

Comments
 (0)