Skip to content
This repository was archived by the owner on Aug 5, 2020. It is now read-only.

Commit ae947aa

Browse files
general cleanup, added configuration entry
1 parent 2d1ec2d commit ae947aa

File tree

6 files changed

+27
-19
lines changed

6 files changed

+27
-19
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"authors": [
77
{
88
"name": "Ralph Schindler",
9-
"email": "ralph_schindler@ziffdavis.com"
9+
"email": "ralph.schindler@ziffmedia.com"
1010
}
1111
],
1212
"require": {

config/onelogin.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,14 @@
6565
* handler will attempt to redirect to /auth, which the laravel-onelogin package can now handle for you.
6666
*/
6767
'autologin' => false,
68-
]
68+
],
69+
70+
/**
71+
* In certain circumstances (such as using cloudflare edge auth), the initial ACS POST request is
72+
* inadvertantly turned into a GET request to the ACS route. Enabling this will make sure that GET
73+
* requests are also redirected back to the onelogin SAML flow
74+
*/
75+
'enable_acs_redirect_for_get' => false,
6976
],
7077

7178
/**

src/Controllers/LocalController.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,8 @@
33
namespace ZiffDavis\Laravel\Onelogin\Controllers;
44

55
use Illuminate\Auth\AuthManager;
6-
use Illuminate\Contracts\Auth\Authenticatable;
76
use Illuminate\Http\Request;
87
use Illuminate\Routing\Controller;
9-
use Illuminate\Support\Facades\Event;
10-
use OneLogin\Saml2\Auth;
11-
use OneLogin\Saml2\Error;
12-
use ZiffDavis\Laravel\Onelogin\Events\OneloginLoginEvent;
13-
use ZiffDavis\Laravel\User\Auth\OneLoginEloquentUserProvider;
148

159
class LocalController extends Controller
1610
{

src/Controllers/OneloginController.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use OneLogin\Saml2\ValidationError;
1515
use ZiffDavis\Laravel\Onelogin\Events\OneloginLoginEvent;
1616

17-
class OneLoginController extends Controller
17+
class OneloginController extends Controller
1818
{
1919
use HasRedirector;
2020

@@ -70,7 +70,12 @@ public function login(Request $request)
7070

7171
public function acs(Request $request, AuthManager $auth)
7272
{
73+
/**
74+
* Support GET requests only when configured to respond, in those cases redirect to onelogin
75+
*/
7376
if ($request->isMethod('GET')) {
77+
abort_if(!config('onelogin.routing.enable_acs_redirect_for_get', false), 405);
78+
7479
return redirect(
7580
$this->oneLogin->login($this->getRedirectUrl($request), [], false, false, true)
7681
);

src/Middleware/OneloginCsrfDisablerMiddleware.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
use Illuminate\Contracts\Container\Container;
66
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
77
use Illuminate\Routing\Router;
8+
use Illuminate\Support\Arr;
89

910
class OneloginCsrfDisablerMiddleware
1011
{
11-
/** @var \Illuminate\Routing\Router */
12+
/** @var Router */
1213
protected $router;
1314

1415
protected $container;
@@ -21,7 +22,7 @@ public function __construct(Router $router, Container $container)
2122

2223
public function __invoke($request, \Closure $next)
2324
{
24-
$csrfMiddlewareClass = array_first($this->router->gatherRouteMiddleware($this->router->getCurrentRoute()), function ($middleware) {
25+
$csrfMiddlewareClass = Arr::first($this->router->gatherRouteMiddleware($this->router->getCurrentRoute()), function ($middleware) {
2526
return in_array(VerifyCsrfToken::class, class_parents($middleware));
2627
});
2728

@@ -34,4 +35,4 @@ public function __invoke($request, \Closure $next)
3435

3536
return $next($request);
3637
}
37-
}
38+
}

src/OneloginServiceProvider.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,34 @@
22

33
namespace ZiffDavis\Laravel\Onelogin;
44

5-
use Illuminate\Auth\AuthManager;
65
use Illuminate\Routing\Router;
6+
use Illuminate\Support\Arr;
77
use Illuminate\Support\ServiceProvider;
88
use OneLogin\Saml2;
99

1010
class OneloginServiceProvider extends ServiceProvider
1111
{
1212
protected $defer = false;
1313

14-
public function boot(AuthManager $auth, Router $router)
14+
public function boot(Router $router)
1515
{
1616
$configSourcePath = realpath(__DIR__ . '/../config/onelogin.php');
1717

1818
$router->middlewareGroup('onelogin', [Middleware\OneloginCsrfDisablerMiddleware::class]);
1919

20-
$middlewares = array_wrap(config('onelogin.routing.middleware'));
20+
$middlewares = Arr::wrap(config('onelogin.routing.middleware'));
2121

22-
$router->group([
22+
$routeGroupParams = [
2323
'namespace' => 'ZiffDavis\Laravel\Onelogin\Controllers',
2424
'as' => 'onelogin.',
2525
'prefix' => 'onelogin/',
2626
'middleware' => array_merge(['onelogin'], $middlewares),
27-
], function () use ($router) {
27+
];
28+
29+
// @todo implement SSO routes at /logout
30+
$router->group($routeGroupParams, function () use ($router) {
2831
$router->get('/metadata', 'OneloginController@metadata')->name('metadata');
2932
$router->get('/login', 'OneloginController@login')->name('login');
30-
// @todo implement SSO
31-
// $router->get('/logout', 'OneloginController@logout')->name('logout');
3233
$router->match(['get', 'post'], '/acs', 'OneloginController@acs')->name('acs');
3334
});
3435

0 commit comments

Comments
 (0)