Completed
Pull Request — master (#37)
by Şəhriyar
09:40
created

RouteServiceProvider::localizedRoutes()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 1

Importance

Changes 6
Bugs 3 Features 2
Metric Value
c 6
b 3
f 2
dl 0
loc 25
ccs 18
cts 18
cp 1
rs 8.8571
cc 1
eloc 17
nc 1
nop 2
crap 1
1
<?php namespace App\Providers;
2
3
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
4
use Illuminate\Routing\Router;
5
6
class RouteServiceProvider extends ServiceProvider
7
{
8
    /**
9
     * This namespace is applied to the controller routes in your routes file.
10
     *
11
     * In addition, it is set as the URL generator's root namespace.
12
     *
13
     * @var string
14
     */
15
    protected $namespace = 'App\Http\Controllers';
16
17
    /**
18
     * Define your route model bindings, pattern filters, etc.
19
     *
20
     * @param  \Illuminate\Routing\Router $router
21
     *
22
     * @return void
23
     */
24 31
    public function boot(Router $router)
25
    {
26 31
        $router->patterns([
27 31
            'provider' => 'twitter|google|facebook',
28
            'token' => '[a-zA-Z0-9-]+'
29 31
        ]);
30
31 31
        parent::boot($router);
32 31
    }
33
34
    /**
35
     * Define the routes for the application.
36
     *
37
     * @param \Illuminate\Routing\Router $router
38
     */
39 31
    public function map(Router $router)
40
    {
41 31
        $defaultLocale = config('app.locale');
42 31
        $namespace = $this->namespace;
43 31
        $middleware = 'web';
44
45
        //-----------------------------------------------------------------------
46
        // Non-localized, generic routes (such as those for admin panel etc).
47
        //-----------------------------------------------------------------------
48
49
        $router->group(compact('namespace', 'middleware'), function (Router $router) {
50 31
            $router->get('/oauth/{provider}', 'Users\AuthController@getOAuth');
51 31
        });
52
53
        //-----------------------------------------------------------------------------------------------------
54
        // Register localized routes with locale-prefices (in case of default locale, no prefix is attached).
55
        //-----------------------------------------------------------------------------------------------------
56
57 31
        foreach (config('app.locales') as $prefix => $localeName) {
58 31
            app('translator')->setLocale($prefix);
59
            // Skip default locale for now.
60 31
            if ($prefix === $defaultLocale) {
61 31
                continue;
62
            }
63
64
            // Set localized routers.
65
            $router->group(compact('namespace', 'middleware', 'prefix'), function (Router $router) use ($prefix) {
66 31
                $this->localizedRoutes($router, $prefix);
67 31
            });
68 31
        }
69
70
        //------------------------------------------------
71
        // Default locale: No prefices are necessary.
72
        //------------------------------------------------
73
74 31
        app('translator')->setLocale($defaultLocale);
75 31
        $router->group(compact('namespace', 'middleware'), function (Router $router) use ($defaultLocale) {
76 31
            $this->localizedRoutes($router, $defaultLocale);
77 31
        });
78 31
    }
79
80 31
    protected function localizedRoutes(Router $router, $prefix)
81
    {
82 31
        $router->get('login/{provider?}', ['uses' => 'Users\AuthController@getLogin', 'as' => $prefix . '.login']);
83 31
        $router->post('login/{provider?}', 'Users\AuthController@postLogin');
84 31
        $router->get('logout', ['uses' => 'Users\AuthController@getLogout', 'as' => $prefix . '.logout']);
85 31
        $router->get('register', ['uses' => 'UsersController@create', 'as' => $prefix . '.register']);
86 31
        $router->post('register', 'UsersController@store');
87
88 31
        $router->resource('users', 'UsersController');
89
90 31
        $router->get('password/email', 'Users\PasswordController@requestPasswordResetLink');
91 31
        $router->post('password/email', 'Users\PasswordController@sendPasswordResetLink');
92 31
        $router->get('password/reset/{token}', 'Users\PasswordController@showPasswordResetForm');
93 31
        $router->post('password/reset', 'Users\PasswordController@resetPassword');
94
95 31
        $router->get('activation', 'Users\ActivationController@requestActivationCode');
96 31
        $router->get('activation/{token}', 'Users\ActivationController@activate');
97 31
        $router->post('activation', 'Users\ActivationController@activate');
98
99 31
        $router->resource('files', 'FilesController', ['only' => ['index', 'create', 'store', 'show', 'destroy']]);
100
101 31
        $router->get('', 'HomeController@index');
102
103 31
        $router->get('admin', 'AdminController@index');
104 31
    }
105
}
106