Skip to content

Commit d0c38ac

Browse files
committed
theme middleware
1 parent 9b90ab5 commit d0c38ac

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
All notable changes to `laravel-themer` will be documented in this file.
44

5+
## 1.2.0 - 2021-01-03
6+
7+
- theme middleware to set active theme
8+
59
## 1.1.0 - 2021-01-03
610

711
- code refactoring

src/Middleware/ThemeMiddleware.php

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Qirolab\Theme\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
use Qirolab\Theme\Theme;
8+
9+
class ThemeMiddleware
10+
{
11+
/**
12+
* Handle an incoming request.
13+
*
14+
* @param \Illuminate\Http\Request $request
15+
* @param \Closure $next
16+
* @return mixed
17+
*/
18+
public function handle(Request $request, Closure $next, string $theme, string $parentTheme = null)
19+
{
20+
Theme::set($theme, $parentTheme);
21+
22+
return $next($request);
23+
}
24+
}

tests/ThemeMiddlewareTest.php

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
namespace Qirolab\Theme\Tests;
4+
5+
use Illuminate\Support\Facades\Route;
6+
use Qirolab\Theme\Middleware\ThemeMiddleware;
7+
use Qirolab\Theme\Theme;
8+
9+
class ThemeMiddlewareTest extends TestCase
10+
{
11+
public function setUp(): void
12+
{
13+
parent::setUp();
14+
15+
Route::get('/admin', function () {
16+
return 'ok';
17+
})->middleware('theme:admin');
18+
19+
Route::get('/frontend', function () {
20+
return 'ok';
21+
})->middleware('theme:frontend,parent');
22+
}
23+
24+
/**
25+
* Define environment setup.
26+
*
27+
* @param \Illuminate\Foundation\Application $app
28+
* @return void
29+
*/
30+
protected function getEnvironmentSetUp($app)
31+
{
32+
$app['router']->aliasMiddleware('theme', ThemeMiddleware::class);
33+
$app['config']->set('theme.active', 'default');
34+
}
35+
36+
/** @test **/
37+
public function it_may_set_active_theme()
38+
{
39+
$this->assertEquals(Theme::active(), 'default');
40+
41+
$this->get('/admin')
42+
->assertSeeText('ok')
43+
->assertStatus(200);
44+
45+
$this->assertEquals(Theme::active(), 'admin');
46+
}
47+
48+
/** @test **/
49+
public function it_may_set_parent_theme()
50+
{
51+
$this->assertEquals(Theme::active(), 'default');
52+
$this->assertEquals(Theme::parent(), null);
53+
54+
$this->get('/frontend')
55+
->assertSeeText('ok')
56+
->assertStatus(200);
57+
58+
$this->assertEquals(Theme::active(), 'frontend');
59+
$this->assertEquals(Theme::parent(), 'parent');
60+
}
61+
}

0 commit comments

Comments
 (0)