Issues (9)

config/middleware.php (1 issue)

1
<?php
2
3
use Aura\Session\Session;
4
use Slim\Exception\NotFoundException;
5
use Slim\Http\Request;
6
use Slim\Http\Response;
7
use Symfony\Component\Translation\Translator;
8
9
$container = $app->getContainer();
10
11
$app->add(function (Request $request, Response $response, $next) use ($container) {
12
    $locale = $request->getAttribute('language');
13
    if ($locale == 'de') {
14
        $locale = 'de_DE';
15
    }
16
    $translator = $container->get(Translator::class);
17
    $resource = __DIR__ . "/../resources/locale/" . $locale . "_messages.mo";
18
    $translator->setLocale($locale);
19
    $translator->setFallbackLocales(['en_US']);
20
    $translator->addResource('mo', $resource, $locale);
21
22
    return $next($request, $response);
23
});
24
25
$app->add(function (Request $request, Response $response, $next) use ($container) {
26
    $language = $request->getAttribute('language');
27
    $hasLanguage = !empty($language);
28
    if (empty($language)) {
29
        // Browser language
30
        $language = $request->getHeader('accept-language')[0];
31
        $language = explode(',', $language)[0];
32
        $language = explode('-', $language)[0];
33
    }
34
    $whitelist = [
35
        'de' => 'de_CH',
36
        'en' => 'en_US',
37
    ];
38
    if (!isset($whitelist[$language])) {
39
        throw new NotFoundException($request, $response);
40
    }
41
    if (!$hasLanguage) {
42
        return $response->withRedirect($container->get('router')->pathFor('root', ['language' => $language]));
43
    }
44
45
    return $next($request, $response);
46
});
47
48
$app->add(function (Request $request, Response $response, $next) {
49
    $route = $request->getAttribute('route');
50
    if (empty($route)) {
51
        return $next($request, $response);
52
    }
53
    $language = $route->getArgument('language');
54
    $request = $request->withAttribute('language', $language);
55
    $response = $next($request, $response);
56
57
    return $response;
58
});
59
60
/**
61
 * Session Middleware
62
 *
63
 * @return Response
64
 */
65
$app->add(function (Request $request, Response $response, $next) {
66
    $session = $this->get(Session::class);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $this seems to be never defined.
Loading history...
67
    $response = $next($request, $response);
68
    $session->commit();
69
70
    return $response;
71
});
72