You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					273 lines
				
				9.8 KiB
			
		
		
			
		
	
	
					273 lines
				
				9.8 KiB
			| 
								 
											5 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use common\auth\Identity;
							 | 
						||
| 
								 | 
							
								use filsh\yii2\oauth2server\filters\auth\CompositeAuth;
							 | 
						||
| 
								 | 
							
								use filsh\yii2\oauth2server\filters\ErrorToExceptionFilter;
							 | 
						||
| 
								 | 
							
								use filsh\yii2\oauth2server\Module;
							 | 
						||
| 
								 | 
							
								use filsh\yii2\oauth2server\Request;
							 | 
						||
| 
								 | 
							
								use filsh\yii2\oauth2server\Response;
							 | 
						||
| 
								 | 
							
								use OAuth2\GrantType\RefreshToken;
							 | 
						||
| 
								 | 
							
								use OAuth2\GrantType\UserCredentials;
							 | 
						||
| 
								 | 
							
								use yii\filters\AccessControl;
							 | 
						||
| 
								 | 
							
								use yii\filters\auth\HttpBearerAuth;
							 | 
						||
| 
								 | 
							
								use yii\filters\auth\QueryParamAuth;
							 | 
						||
| 
								 | 
							
								use yii\filters\ContentNegotiator;
							 | 
						||
| 
								 | 
							
								use yii\log\FileTarget;
							 | 
						||
| 
								 | 
							
								use yii\web\JsonParser;
							 | 
						||
| 
								 | 
							
								use yii\web\JsonResponseFormatter;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$params = array_merge(
							 | 
						||
| 
								 | 
							
								    require __DIR__ . '/../../common/config/params.php',
							 | 
						||
| 
								 | 
							
								    require __DIR__ . '/../../common/config/params-local.php',
							 | 
						||
| 
								 | 
							
								    require __DIR__ . '/params.php',
							 | 
						||
| 
								 | 
							
								    require __DIR__ . '/params-local.php'
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								return [
							 | 
						||
| 
								 | 
							
								    'id'                  => 'app-api',
							 | 
						||
| 
								 | 
							
								    'language'            => 'ru',
							 | 
						||
| 
								 | 
							
								    'basePath'            => dirname(__DIR__),
							 | 
						||
| 
								 | 
							
								    'bootstrap'           => [
							 | 
						||
| 
								 | 
							
								        'log',
							 | 
						||
| 
								 | 
							
								        'common\bootstrap\SetUp',
							 | 
						||
| 
								 | 
							
								        'api\bootstrap\SetUp',
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            'class' => ContentNegotiator::class,
							 | 
						||
| 
								 | 
							
								            'formats' => [
							 | 
						||
| 
								 | 
							
								                'application/json' => 'json',
							 | 
						||
| 
								 | 
							
								                'application/xml' => 'xml',
							 | 
						||
| 
								 | 
							
								            ]
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'aliases'             => [
							 | 
						||
| 
								 | 
							
								        '@staticRoot' => $params['staticPath'],
							 | 
						||
| 
								 | 
							
								        '@static'     => $params['staticHostInfo'],
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'controllerNamespace' => 'api\controllers',
							 | 
						||
| 
								 | 
							
								    'modules' => [
							 | 
						||
| 
								 | 
							
								        'oauth2' => [
							 | 
						||
| 
								 | 
							
								            'class' => Module::class,
							 | 
						||
| 
								 | 
							
								            'tokenParamName' => 'accessToken',
							 | 
						||
| 
								 | 
							
								            'tokenAccessLifetime' => 3600 * 24,
							 | 
						||
| 
								 | 
							
								            'storageMap' => [
							 | 
						||
| 
								 | 
							
								                'user_credentials' => Identity::class,
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								            'components' => [
							 | 
						||
| 
								 | 
							
								                'request' => function () {
							 | 
						||
| 
								 | 
							
								                    return Request::createFromGlobals();
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                'response' => [
							 | 
						||
| 
								 | 
							
								                    'class' => Response::class,
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								            'grantTypes' => [
							 | 
						||
| 
								 | 
							
								                'user_credentials' => [
							 | 
						||
| 
								 | 
							
								                    'class' => UserCredentials::class,
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'refresh_token' => [
							 | 
						||
| 
								 | 
							
								                    'class' => RefreshToken::class,
							 | 
						||
| 
								 | 
							
								                    'always_issue_new_refresh_token' => true
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'components'          => [
							 | 
						||
| 
								 | 
							
								        'request'            => [
							 | 
						||
| 
								 | 
							
								            'baseUrl' => '',
							 | 
						||
| 
								 | 
							
								            'cookieValidationKey' => $params['cookieValidationKey'],
							 | 
						||
| 
								 | 
							
								            'parsers' => [
							 | 
						||
| 
								 | 
							
								                'application/json' => JsonParser::class,
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'response' => [
							 | 
						||
| 
								 | 
							
								            'formatters' => [
							 | 
						||
| 
								 | 
							
								                'json' => [
							 | 
						||
| 
								 | 
							
								                    'class' => JsonResponseFormatter::class,
							 | 
						||
| 
								 | 
							
								                    'prettyPrint' => YII_DEBUG,
							 | 
						||
| 
								 | 
							
								                    'encodeOptions' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE,
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'user'               => [
							 | 
						||
| 
								 | 
							
								            'identityClass' => Identity::class,
							 | 
						||
| 
								 | 
							
								            'enableAutoLogin' => false,
							 | 
						||
| 
								 | 
							
								            'enableSession' => false,
							 | 
						||
| 
								 | 
							
								            /*'identityClass'   => 'common\auth\Identity',
							 | 
						||
| 
								 | 
							
								            'enableAutoLogin' => true,
							 | 
						||
| 
								 | 
							
								            'identityCookie'  => ['name' => '_identity', 'httpOnly' => true, 'domain' => $params['cookieDomain']],
							 | 
						||
| 
								 | 
							
								            'loginUrl'        => ['auth/auth/login'],*/
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        /*'session'            => [
							 | 
						||
| 
								 | 
							
								            'name'          => '_session',
							 | 
						||
| 
								 | 
							
								            'class'         => 'yii\web\DbSession',
							 | 
						||
| 
								 | 
							
								            'writeCallback' => function ($session) {
							 | 
						||
| 
								 | 
							
								                return [
							 | 
						||
| 
								 | 
							
								                    'user_id' => Yii::$app->user->id
							 | 
						||
| 
								 | 
							
								                ];
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            'cookieParams'  => [
							 | 
						||
| 
								 | 
							
								                'domain'   => $params['cookieDomain'],
							 | 
						||
| 
								 | 
							
								                'httpOnly' => true,
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],*/
							 | 
						||
| 
								 | 
							
								        'log'                => [
							 | 
						||
| 
								 | 
							
								            'traceLevel' => YII_DEBUG ? 3 : 0,
							 | 
						||
| 
								 | 
							
								            'targets'    => [
							 | 
						||
| 
								 | 
							
								                [
							 | 
						||
| 
								 | 
							
								                    'class'  => FileTarget::class,
							 | 
						||
| 
								 | 
							
								                    'levels' => ['error', 'warning'],
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'backendUrlManager'  => require __DIR__ . '/../../backend/config/urlManager.php',
							 | 
						||
| 
								 | 
							
								        'frontendUrlManager' => require __DIR__ . '/../../frontend/config/urlManager.php',
							 | 
						||
| 
								 | 
							
								        'urlManager' => [
							 | 
						||
| 
								 | 
							
								            'enablePrettyUrl' => true,
							 | 
						||
| 
								 | 
							
								            'enableStrictParsing' => true,
							 | 
						||
| 
								 | 
							
								            'showScriptName' => false,
							 | 
						||
| 
								 | 
							
								            'rules' => [
							 | 
						||
| 
								 | 
							
								                ''                              => 'site/index',
							 | 
						||
| 
								 | 
							
								                'GET offer'                     => 'site/offer',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                'GET profile'                   => 'user/profile/index',
							 | 
						||
| 
								 | 
							
								                'PUT profile'                   => 'user/profile/update',
							 | 
						||
| 
								 | 
							
								                'GET profile/avatar'            => 'user/profile/avatar-get',
							 | 
						||
| 
								 | 
							
								                'POST profile/avatar'           => 'user/profile/avatar-set',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                'POST oauth2/<action:\w+>'      => 'oauth2/rest/<action>',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                'POST auth/signup'              => 'auth/signup/request',
							 | 
						||
| 
								 | 
							
								                'POST auth/reset/request'       => 'auth/reset/request',
							 | 
						||
| 
								 | 
							
								                'POST auth/reset/check'         => 'auth/reset/check',
							 | 
						||
| 
								 | 
							
								                'POST auth/reset/confirm'       => 'auth/reset/confirm',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'i18n' => [
							 | 
						||
| 
								 | 
							
								            'translations' => [
							 | 
						||
| 
								 | 
							
								                'modules/oauth2/*' => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@api/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'user'   => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'auth'   => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'main'   => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        /*'errorHandler'       => [
							 | 
						||
| 
								 | 
							
								            'errorAction' => 'site/error',
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'backendUrlManager'  => require __DIR__ . '/../../backend/config/urlManager.php',
							 | 
						||
| 
								 | 
							
								        'frontendUrlManager' => require __DIR__ . '/urlManager.php',
							 | 
						||
| 
								 | 
							
								        'urlManager'         => function () {
							 | 
						||
| 
								 | 
							
								            return Yii::$app->get('frontendUrlManager');
							 | 
						||
| 
								 | 
							
								        },*/
							 | 
						||
| 
								 | 
							
								        /*'i18n'               => [
							 | 
						||
| 
								 | 
							
								            'translations' => [
							 | 
						||
| 
								 | 
							
								                'post'   => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'slider' => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'auth'   => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'user'   => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'main'   => [
							 | 
						||
| 
								 | 
							
								                    'class'    => 'yii\i18n\PhpMessageSource',
							 | 
						||
| 
								 | 
							
								                    'basePath' => '@frontend/messages',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],*
							 | 
						||
| 
								 | 
							
								        'view'               => [
							 | 
						||
| 
								 | 
							
								            'theme' => [
							 | 
						||
| 
								 | 
							
								                'basePath' => '@webroot/themes/sport',
							 | 
						||
| 
								 | 
							
								                'baseUrl'  => '@web/themes/sport',
							 | 
						||
| 
								 | 
							
								                'pathMap'  => [
							 | 
						||
| 
								 | 
							
								                    '@frontend/views'   => '@webroot/themes/sport',
							 | 
						||
| 
								 | 
							
								                    '@frontend/widgets' => '@webroot/themes/sport/widgets',
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'assetManager'       => [
							 | 
						||
| 
								 | 
							
								            'bundles' => [
							 | 
						||
| 
								 | 
							
								                'yii\web\JqueryAsset'                => [
							 | 
						||
| 
								 | 
							
								                    'sourcePath' => '@frontend/assets/libs/jquery321',   // do not publish the bundle
							 | 
						||
| 
								 | 
							
								                    'js'         => [
							 | 
						||
| 
								 | 
							
								                        YII_ENV_DEV ? 'jquery-3.2.1.js' : 'jquery-3.2.1.min.js'
							 | 
						||
| 
								 | 
							
								                    ],
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'yii\bootstrap\BootstrapAsset'       => [
							 | 
						||
| 
								 | 
							
								                    'sourcePath' => '@frontend/assets/libs/bootstrap4/css',   // do not publish the bundle
							 | 
						||
| 
								 | 
							
								                    'css'        => [
							 | 
						||
| 
								 | 
							
								                        YII_ENV_DEV ? 'bootstrap.css' : 'bootstrap.min.css'
							 | 
						||
| 
								 | 
							
								                    ],
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								                'yii\bootstrap\BootstrapPluginAsset' => [
							 | 
						||
| 
								 | 
							
								                    'sourcePath' => '@frontend/assets/libs/bootstrap4/js',   // do not publish the bundle
							 | 
						||
| 
								 | 
							
								                    'js'         => [
							 | 
						||
| 
								 | 
							
								                        YII_ENV_DEV ? 'bootstrap.js' : 'bootstrap.min.js'
							 | 
						||
| 
								 | 
							
								                    ],
							 | 
						||
| 
								 | 
							
								                    'depends'    => [
							 | 
						||
| 
								 | 
							
								                        'yii\web\JqueryAsset',
							 | 
						||
| 
								 | 
							
								                        'yii\bootstrap\BootstrapAsset',
							 | 
						||
| 
								 | 
							
								                    ],
							 | 
						||
| 
								 | 
							
								                ],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],*/
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'as authenticator' => [
							 | 
						||
| 
								 | 
							
								        'class' => CompositeAuth::class,
							 | 
						||
| 
								 | 
							
								        'except' => [
							 | 
						||
| 
								 | 
							
								            'site/index',
							 | 
						||
| 
								 | 
							
								            'site/offer',
							 | 
						||
| 
								 | 
							
								            'oauth2/rest/token',
							 | 
						||
| 
								 | 
							
								            'auth/reset/check',
							 | 
						||
| 
								 | 
							
								            'auth/reset/confirm',
							 | 
						||
| 
								 | 
							
								            'auth/reset/request',
							 | 
						||
| 
								 | 
							
								            'auth/signup/request'
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'authMethods' => [
							 | 
						||
| 
								 | 
							
								            ['class' => 'yii\filters\auth\HttpBearerAuth'],
							 | 
						||
| 
								 | 
							
								            ['class' => 'yii\filters\auth\QueryParamAuth', 'tokenParam' => 'accessToken'],
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'as access' => [
							 | 
						||
| 
								 | 
							
								        'class' => AccessControl::class,
							 | 
						||
| 
								 | 
							
								        'except' => [
							 | 
						||
| 
								 | 
							
								            'site/index',
							 | 
						||
| 
								 | 
							
								            'site/offer',
							 | 
						||
| 
								 | 
							
								            'oauth2/rest/token',
							 | 
						||
| 
								 | 
							
								            'auth/reset/check',
							 | 
						||
| 
								 | 
							
								            'auth/reset/confirm',
							 | 
						||
| 
								 | 
							
								            'auth/reset/request',
							 | 
						||
| 
								 | 
							
								            'auth/signup/request'
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        'rules' => [
							 | 
						||
| 
								 | 
							
								            [
							 | 
						||
| 
								 | 
							
								                'allow' => true,
							 | 
						||
| 
								 | 
							
								                'roles' => ['@'],
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'as exceptionFilter' => [
							 | 
						||
| 
								 | 
							
								        'class' => ErrorToExceptionFilter::class,
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'params'              => $params,
							 | 
						||
| 
								 | 
							
								];
							 |