Passed
Push — master ( e3ed84...3f53d8 )
by Dominic
02:49
created

AuthorizationController::store()   A

Complexity

Conditions 5
Paths 8

Size

Total Lines 23
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 11
nc 8
nop 2
dl 0
loc 23
c 0
b 0
f 0
cc 5
rs 9.6111
1
<?php
2
3
namespace tbclla\Revolut\Controllers;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Routing\Controller;
7
use tbclla\Revolut\Auth\AuthorizationCode;
8
use tbclla\Revolut\Auth\Requests\AuthorizationCodeRequest;
9
use tbclla\Revolut\Auth\TokenManager;
10
11
class AuthorizationController extends Controller
12
{
13
	/**
14
	 * @param \illuminate\Http\Request $request
15
	 * @param \tbclla\Revolut\Auth\Requests\AuthorizationCodeRequest $authRequest
16
	 * @return \illuminate\Http\RedirectResponse
17
	 */
18
	public function create(Request $request, AuthorizationCodeRequest $authRequest)
19
	{
20
		// store the state and an optional redirect url
21
		session([$authRequest->state => $request->after_success ?? null]);
22
23
		// redirect to Revolut's OAuth flow
24
		return redirect($authRequest->build());
25
	}
26
27
	/**
28
	 * @param \illuminate\Http\Request $request
29
	 * @param \tbclla\Revolut\Auth\TokenManager
30
	 * @return mixed
31
	 */
32
	public function store(Request $request, TokenManager $tokenManager)
33
	{
34
		// verify that the request contains the required parameters
35
		if (!$request->state or !$request->code) {
36
			abort(405, 'Invalid Request');
37
		}
38
39
		// verify that the session holds a matching state
40
		if (!session()->has($request->state)) {
41
			abort(405, 'Invalid State');
42
		}
43
44
		$authCode = new AuthorizationCode($request->code);
45
		
46
		$tokenManager->requestAccessToken($authCode);
47
48
		$redirect = session()->get($request->state);
49
50
		session()->forget($request->state);
51
52
		return $redirect
53
			? redirect($redirect)
54
		 	: response('Authorization successfull', 200);
55
	}
56
}
57