Files
Admin Nasledstvo ac168868ee Initial import
2026-05-01 20:52:04 +03:00

99 lines
2.5 KiB
PHP

<?php
namespace app\controllers;
use app\models\CmsRr;
use app\models\UserSession;
use app\services\Auth;
use app\widgets\services\UserRight;
class PartnerController extends BaseController
{
public $layout = 'cms';
public $userTypeKey = 'partner';
public $partnerKey = '';
/** @var \app\models\UserPartner */
public $partner;
public function beforeAction($action)
{
$partner = Auth::userPartner();
if (!$partner) {
header('Location: /partner/');
exit;
} else {
if($partner && $partner->open_id) {
$us = UserSession::find()->where(['sub' => $partner->open_id])->one();
if(!$us) {
Auth::userPartnerLogout();
return $this->redirect('/partner');
}
}
}
$this->partner = $partner;
UserRight::setPartner($this->partner);
return parent::beforeAction($action);
}
public function actionIndex($page)
{
if(!$this->partner) {
$redirect = \Yii::$app->params['cms'] . '/partner-register-login/';
header('Location: '. $redirect);
exit;
}
return $this->render("index/$page");
}
public function actionWebsite($page)
{
if ($page == 'users' && !$this->partner->getRightsIds(1))
return $this->redirect('/partner/index/dashboard');
return $this->render("website/$page");
}
public function actionUser($page)
{
return $this->render("user/$page");
}
public function actionLogout()
{
$partner = Auth::userPartner();
if($partner->open_id) {
$q = "";
if(!empty($_SESSION['id_token_hint'])) {
$redirect = \Yii::$app->params['cms'] . '/partner-register-login/';
$q = '?id_token_hint='.$_SESSION['id_token_hint'].'&post_logout_redirect_uri='.$redirect;
}
header('Location: '. \Yii::$app->params['sso_logout_url'].$q);
exit;
}
exit;
}
public function actionRoleRights()
{
if (!empty($_GET['role_id'])) {
$roleRights = CmsRr::find()->innerJoinWith('right')->where(['role_id' => $_GET['role_id'], 'is_active' => 1])->all();
$rightsIds = [];
foreach ($roleRights as $rr) {
$rightsIds[] = $rr->right_id;
}
return $this->asJson(['rights' => $rightsIds]);
}
return $this->asJson([]);
}
}