Add initiailize middleware
This commit is contained in:
parent
09336537e4
commit
6318490398
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use App\Providers\RouteServiceProvider;
|
||||||
|
use App\Setting\NamiSettings;
|
||||||
use Closure;
|
use Closure;
|
||||||
|
|
||||||
class RedirectIfNotInitializedMiddleware
|
class RedirectIfNotInitializedMiddleware
|
||||||
|
@ -17,6 +19,10 @@ class RedirectIfNotInitializedMiddleware
|
||||||
*/
|
*/
|
||||||
public function handle($request, Closure $next)
|
public function handle($request, Closure $next)
|
||||||
{
|
{
|
||||||
|
if ($this->initialized() && request()->routeIs(['initialize.form'])) {
|
||||||
|
return redirect()->to(RouteServiceProvider::HOME);
|
||||||
|
}
|
||||||
|
|
||||||
if (!$this->shouldRedirect()) {
|
if (!$this->shouldRedirect()) {
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +41,6 @@ class RedirectIfNotInitializedMiddleware
|
||||||
|
|
||||||
public function initialized(): bool
|
public function initialized(): bool
|
||||||
{
|
{
|
||||||
return \App\Fee::count() > 0;
|
return 0 !== app(NamiSettings::class)->default_group_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Feature\Initialize;
|
||||||
|
|
||||||
|
use App\Setting\NamiSettings;
|
||||||
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class MiddlewareTest extends TestCase
|
||||||
|
{
|
||||||
|
use DatabaseTransactions;
|
||||||
|
|
||||||
|
public function testItRedirectsToInitializeRouteWhenNotInitialized(): void
|
||||||
|
{
|
||||||
|
$this->login();
|
||||||
|
$response = $this->get('/');
|
||||||
|
|
||||||
|
$response->assertRedirect('/initialize');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItDoesntRedirctIfUserIsGuest(): void
|
||||||
|
{
|
||||||
|
$response = $this->get('/');
|
||||||
|
|
||||||
|
$response->assertRedirect('/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItDoesntRedirectToInitializeRoute(): void
|
||||||
|
{
|
||||||
|
$this->login();
|
||||||
|
$response = $this->get('/initialize');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItDoesntRedirectWhenAlreadyInitialized(): void
|
||||||
|
{
|
||||||
|
NamiSettings::fake([
|
||||||
|
'mglnr' => 333,
|
||||||
|
'password' => 'secret',
|
||||||
|
'default_group_id' => 555,
|
||||||
|
]);
|
||||||
|
$this->login();
|
||||||
|
|
||||||
|
$response = $this->get('/');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItRedirectsHomeWhenAlreadyInitialized(): void
|
||||||
|
{
|
||||||
|
NamiSettings::fake([
|
||||||
|
'mglnr' => 333,
|
||||||
|
'password' => 'secret',
|
||||||
|
'default_group_id' => 555,
|
||||||
|
]);
|
||||||
|
$this->login();
|
||||||
|
|
||||||
|
$response = $this->get('/initialize');
|
||||||
|
|
||||||
|
$response->assertRedirect('/');
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue