Exemplo n.º 1
0
 public function actionView($id)
 {
     $user = User::findOne($id);
     if (self::can("user/read")) {
         $roles = UserDomainRole::find()->where(['user_id' => $user->id])->all();
         $filtered = [];
         foreach ($roles as $role) {
             if ($role->getGroup()->type == Group::TYPE_DOMAIN) {
                 $filtered[] = $role->id;
             }
         }
         $queryDomain = UserDomainRole::find()->where(['in', 'id', $filtered]);
     } else {
         if (self::can("role/read")) {
             $allowedDomains = self::whichDomainsCan('role/read');
             $domains_name = [];
             foreach ($allowedDomains as $domain) {
                 $domains_name[] = $domain->name;
             }
             $roles = UserDomainRole::find()->where(['user_id' => $user->id])->andWhere(['in', 'domain', $domains_name])->all();
             $filtered = [];
             foreach ($roles as $role) {
                 if ($role->getGroup()->type == Group::TYPE_DOMAIN) {
                     $filtered[] = $role->id;
                 }
             }
             $queryDomain = UserDomainRole::find()->where(['in', 'id', $filtered]);
         }
     }
     $domainProvider = new ActiveDataProvider(['query' => $queryDomain, 'pagination' => ['pageSize' => 5], 'sort' => false]);
     $roles = UserDomainRole::find()->where(['user_id' => $user->id])->all();
     $filtered = [];
     if (self::can("user/read")) {
         foreach ($roles as $role) {
             if ($role->getGroup()->type == Group::TYPE_SYSTEM) {
                 $filtered[] = $role->id;
             }
         }
     }
     $querySystem = UserDomainRole::find()->where(['in', 'id', $filtered]);
     $systemProvider = new ActiveDataProvider(['query' => $querySystem, 'pagination' => ['pageSize' => 5], 'sort' => false]);
     return $this->render('view', array('model' => $user, 'domainRolesProvider' => $domainProvider, 'systemRolesProvider' => $systemProvider));
 }
Exemplo n.º 2
0
 static function can($permissions = null, $domain = null, $redirect = false)
 {
     if (!is_array($permissions)) {
         if ($permissions) {
             $permissions = [$permissions];
         }
     }
     $userId = Yii::$app->user->getId();
     if ($domain != null) {
         $roles = UserDomainRole::find()->where(['user_id' => $userId, 'domain' => $domain])->all();
         foreach ($roles as $role) {
             if (self::checkPermission($permissions, $role)) {
                 return true;
             }
         }
         $roles = UserDomainRole::find()->where(['user_id' => $userId, 'domain' => null])->all();
         foreach ($roles as $role) {
             if (self::checkPermission($permissions, $role)) {
                 return true;
             }
         }
     } else {
         $roles = UserDomainRole::find()->where(['user_id' => $userId])->all();
         foreach ($roles as $role) {
             if (self::checkPermission($permissions, $role)) {
                 return true;
             }
         }
     }
     if ($redirect) {
         self::redirectToErrorPage();
     }
     return false;
 }
Exemplo n.º 3
0
 public function searchByDomains($params, $allowed_domains, $root)
 {
     $this->load($params);
     Yii::trace($this->domain);
     $domains_name = [];
     foreach ($allowed_domains as $domain) {
         $domains_name[] = $domain->name;
     }
     if (!$root) {
         if ($this->domain) {
             $users = UserDomainRole::find()->where(['in', 'domain', $this->domain])->all();
         } else {
             $users = UserDomainRole::find()->where(['in', 'domain', $domains_name])->all();
         }
         $users_id = [];
         foreach ($users as $user) {
             $users_id[] = $user->user_id;
         }
     } else {
         if ($this->domain) {
             $users = UserDomainRole::find()->where(['in', 'domain', $this->domain])->all();
             $users_id = [];
             foreach ($users as $user) {
                 $users_id[] = $user->user_id;
             }
         } else {
             $users = User::find()->all();
             $users_id = [];
             foreach ($users as $user) {
                 $users_id[] = $user->id;
             }
         }
     }
     $users = User::find()->where(['in', 'id', $users_id])->all();
     $userForm = [];
     foreach ($users as $user) {
         $aux = new UserSearchForm();
         if ($this->domain) {
             $count = UserDomainRole::find()->where(['user_id' => $user->id, 'domain' => $this->domain])->count();
         } else {
             if (!$root) {
                 $count = UserDomainRole::find()->where(['user_id' => $user->id])->andWhere(['in', 'domain', $domains_name])->select('DISTINCT `domain`')->count();
             } else {
                 $count = UserDomainRole::find()->where(['user_id' => $user->id])->select('DISTINCT `domain`')->count();
             }
         }
         $aux->setData($user, $count);
         $userForm[$aux->id] = $aux;
     }
     $data = new ArrayDataProvider(['allModels' => $userForm, 'sort' => false, 'pagination' => ['pageSize' => 15]]);
     return $data;
 }
Exemplo n.º 4
0
 public function actionUpdateRoleSystem($id)
 {
     $udr = UserDomainRole::findOne($id);
     if (!$udr) {
         if (!self::can("user/read")) {
             return $this->goHome();
         } else {
             Yii::$app->getSession()->addFlash('warning', Yii::t('topology', 'Role not found'));
             return $this->redirect(array('/aaa/user/view', 'id' => $udr->user_id));
         }
     }
     if (!self::can("user/update")) {
         if (!self::can("role/read")) {
             return $this->goHome();
         } else {
             Yii::$app->getSession()->addFlash('warning', Yii::t('aaa', 'You are not allowed to update roles'));
             return $this->redirect(array('/aaa/user/view', 'id' => $udr->user_id));
         }
     }
     $udr->getGroup();
     $group = $udr->getGroup();
     if (isset($_POST["UserDomainRole"])) {
         $form = $_POST["UserDomainRole"];
         $udr->_groupRoleName = $form["_groupRoleName"];
         $roleDomain = null;
         $alreadyHas = false;
         $roles = UserDomainRole::find()->where(['domain' => $udr->domain, 'user_id' => $udr->user_id])->all();
         foreach ($roles as $role) {
             if ($role->getGroup()->role_name == $udr->_groupRoleName) {
                 $alreadyHas = true;
                 break;
             }
         }
         if ($alreadyHas) {
             Yii::$app->getSession()->setFlash("warning", Yii::t("aaa", 'The user already has this profile'));
             return $this->redirect(array('/aaa/user/view', 'id' => $udr->user_id));
         } else {
             if ($udr->save()) {
                 AaaNotification::createRole($udr);
                 AaaNotification::deleteRole($udr, $group);
                 Yii::$app->getSession()->setFlash("success", Yii::t("aaa", 'Role updated successfully'));
                 return $this->redirect(array('/aaa/user/view', 'id' => $udr->user_id));
             } else {
                 foreach ($udr->getErrors() as $attribute => $error) {
                     Yii::$app->getSession()->setFlash("error", $error[0]);
                 }
             }
         }
     }
     $groups = [];
     foreach ($udr->getSystemGroupsNoArray() as $group) {
         $groups[$group->role_name] = $group->name;
     }
     return $this->renderPartial('_edit-role-system', array('udr' => $udr, 'groups' => $groups));
 }
Exemplo n.º 5
0
 public function getUserDomainsRoles()
 {
     return UserDomainRole::find()->where(['domain' => $this->name])->orWhere(['domain' => null]);
 }