Работа над сайтом 13

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-07-07 06:56:04 +10:00
parent fc59eff6db
commit d5bb9137f7

View File

@ -101,7 +101,9 @@ $config = [
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>' => 'order/supply-<action>', 'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>' => 'order/supply-<action>',
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>/<target:(stts|cost|time|comm)>' => 'order/supply-<action>-<target>', 'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>/<target:(stts|cost|time|comm)>' => 'order/supply-<action>-<target>',
'invoices/<order:[^/]+>' => 'invoice/index', 'invoices/<order:[^/]+>' => 'invoice/index',
'invoices/<order:[^/]+>/<action:(download)>' => 'invoice/<action>' 'invoices/<order:[^/]+>/<action:(download)>' => 'invoice/<action>',
'verify/send' => 'verify/send',
'verify/<vrfy:[^/]+>' => 'verify/index'
], ],
], ],
@ -131,17 +133,44 @@ $config = [
], ],
'params' => require __DIR__ . '/params.php', 'params' => require __DIR__ . '/params.php',
'on beforeAction' => function ($event) { 'on beforeAction' => function ($event) {
if ( if (yii::$app->user->isGuest) {
!yii::$app->user->isGuest // Гость
&& (yii::$app->request->getPathInfo() !== 'offer' } else {
&& yii::$app->request->getPathInfo() !== 'offer/suppliers' // Пользователь
&& yii::$app->request->getPathInfo() !== 'offer/accept'
&& yii::$app->request->getPathInfo() !== 'offer/accept-suppliers'
&& yii::$app->request->getPathInfo() !== 'notification'
&& yii::$app->request->getPathInfo() !== 'identification')
) {
// Нет соглашения с офертой
// Подтверждение почты
if (yii::$app->user->identity->vrfy !== true) {
// Почта не подтверждена
if (!(str_starts_with(yii::$app->request->getPathInfo(), 'verify')
|| match (yii::$app->request->getPathInfo()) {
'policy', 'notification', 'identification' => true,
default => false
})) {
// Фильтрация страниц
if (yii::$app->request->isPost) {
// POST-запрос
yii::$app->response->format = Response::FORMAT_JSON;
yii::$app->response->statusCode = 401;
return [
'main' => yii::$app->controller->renderPartial('/account/verify'),
'redirect' => '/registration',
'_csrf' => yii::$app->request->getCsrfToken()
];
} else {
// Подразумевается как GET-запрос
// Переадресация на страницу указывающую на необходимость подтвердить почту
yii::$app->response->redirect('/verify')->send();
}
}
}
// Согласие с офертой
if ( if (
!(isset(yii::$app->session['offer_buyer_accepted']) !(isset(yii::$app->session['offer_buyer_accepted'])
&& yii::$app->session['offer_buyer_accepted'] === true) && yii::$app->session['offer_buyer_accepted'] === true)
@ -150,8 +179,33 @@ $config = [
) { ) {
// Нет подтверждения офферты пользователя // Нет подтверждения офферты пользователя
if (!(str_starts_with(yii::$app->request->getPathInfo(), 'verify')
|| str_starts_with(yii::$app->request->getPathInfo(), 'offer')
|| match (yii::$app->request->getPathInfo()) {
'notification', 'identification' => true,
default => false
})) {
// Фильтрация страниц
if (yii::$app->request->isPost) {
// POST-запрос
yii::$app->response->format = Response::FORMAT_JSON;
yii::$app->response->statusCode = 401;
return [
'main' => yii::$app->controller->renderPartial('/offer/index'),
'redirect' => '/registration',
'_csrf' => yii::$app->request->getCsrfToken()
];
} else {
// Подразумевается как GET-запрос
// Переадресация на оферту // Переадресация на оферту
yii::$app->response->redirect('/offer')->send(); yii::$app->response->redirect('/offer')->send();
}
}
} else if ( } else if (
(isset(yii::$app->user->identity->agnt) (isset(yii::$app->user->identity->agnt)
&& yii::$app->user->identity->agnt === true) && yii::$app->user->identity->agnt === true)
@ -162,11 +216,36 @@ $config = [
) { ) {
// Нет подтверждения офферты поставщика // Нет подтверждения офферты поставщика
if (!(str_starts_with(yii::$app->request->getPathInfo(), 'verify')
|| str_starts_with(yii::$app->request->getPathInfo(), 'offer')
|| match (yii::$app->request->getPathInfo()) {
'notification', 'identification' => true,
default => false
})) {
// Фильтрация страниц
if (yii::$app->request->isPost) {
// POST-запрос
yii::$app->response->format = Response::FORMAT_JSON;
yii::$app->response->statusCode = 401;
return [
'main' => $this->renderPartial('/offer/supplier'),
'redirect' => '/registration',
'_csrf' => yii::$app->request->getCsrfToken()
];
} else {
// Подразумевается как GET-запрос
// Переадресация на оферту // Переадресация на оферту
yii::$app->response->redirect('/offer/suppliers')->send(); yii::$app->response->redirect('/offer/suppliers')->send();
} }
} }
} }
}
}
]; ];
if (YII_ENV_DEV) { if (YII_ENV_DEV) {