Exemplo n.º 1
0
 public function delete()
 {
     $roles = UserDomainRole::findByGroup($this)->all();
     foreach ($roles as $role) {
         $role->delete();
     }
     try {
         $connection = Yii::$app->db;
         $command = $connection->createCommand("DELETE FROM meican_auth_item WHERE name='" . $this->role_name . "'")->execute();
         return true;
     } catch (Exception $e) {
         return false;
     }
 }
Exemplo n.º 2
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));
 }
 static function createToGroup($group_id, $domain, $reservation_id, $auth_id, $date = null)
 {
     $group = Group::findOne($group_id);
     $domain = Domain::findOne(['name' => $domain]);
     if (!$group || !$domain) {
         return false;
     }
     //Confere todos papeis associados ao grupo
     $roles = UserDomainRole::findByGroup($group);
     foreach ($roles->all() as $role) {
         if ($role->domain == null || $role->domain == $domain->name) {
             //Se papel for para todos dominios ou para dominio espeficido
             //Confere se já foi feita uma notificação de algum circuito desta reserva, se sim, reutiliza a mesma notificação
             $not = null;
             $notifications = Notification::find()->where(['user_id' => $role->user_id, 'type' => Notification::TYPE_AUTHORIZATION])->all();
             foreach ($notifications as $notification) {
                 $cauth = ConnectionAuth::findOne($notification->info);
                 if ($cauth) {
                     if ($cauth->domain == $domain->name) {
                         $conn = Connection::findOne($cauth->connection_id);
                         if ($conn) {
                             if ($conn->reservation_id == $reservation_id) {
                                 $not = $notification;
                                 break;
                             }
                         }
                     }
                 }
             }
             if ($not) {
                 //Se já existe, atualiza e coloca nova data
                 //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação
                 if ($date) {
                     $not->date = $date;
                 } else {
                     //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário
                     $date = new \DateTime('now', new \DateTimeZone("UTC"));
                     $dateAux = $date->format("Y-m-d H:i:s");
                     while (Notification::find()->where(['user_id' => $role->user_id, 'date' => $dateAux])->one()) {
                         $date->modify('-1 second');
                         $dateAux = $date->format("Y-m-d H:i:s");
                     }
                     $not->date = $dateAux;
                 }
                 $not->viewed = 0;
                 $not->save();
             } else {
                 //Se for nova, cria notificação
                 $not = new Notification();
                 $not->user_id = $role->user_id;
                 if (isset($date)) {
                     $not->date = $date;
                 } else {
                     //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário
                     $date = new \DateTime('now', new \DateTimeZone("UTC"));
                     $dateAux = $date->format("Y-m-d H:i:s");
                     while (Notification::find()->where(['user_id' => $role->user_id, 'date' => $dateAux])->one()) {
                         $date->modify('-1 second');
                         $dateAux = $date->format("Y-m-d H:i:s");
                     }
                     $not->date = $dateAux;
                 }
                 $not->date = $dateAux;
                 $not->type = Notification::TYPE_AUTHORIZATION;
                 $not->viewed = 0;
                 $not->info = (string) $auth_id;
                 $not->save();
             }
         }
     }
 }
Exemplo n.º 4
0
$form = ActiveForm::begin(['id' => 'config-form', 'method' => 'post', 'layout' => 'horizontal']);
?>

<div class="box box-default">
    <div class="box-header with-border">
        <h3 class="box-title"><?php 
echo Yii::t("aaa", "Federation sign-in");
?>
</h3></h3>
    </div>
    <div class="box-body">
        <?php 
echo $form->field($model, 'status')->dropDownList(ArrayHelper::map([['id' => 'true', 'name' => Yii::t("aaa", "Enabled")], ['id' => 'false', 'name' => Yii::t("aaa", "Disabled")]], 'id', 'name'));
?>
        <?php 
echo $form->field($model, 'group')->dropDownList(ArrayHelper::map(UserDomainRole::getDomainGroups(), 'role_name', 'name'));
?>
		<?php 
echo $form->field($model, 'domain')->dropDownList(array_merge([null => Yii::t("aaa", "any")], ArrayHelper::map(Domain::find()->orderBy(['name' => SORT_ASC])->asArray()->all(), 'name', 'name')));
?>
    </div>
    <div class="box-footer">
        <div class="form-group">
            <div class="col-sm-offset-3 col-sm-6">
                <button type="submit" class="btn btn-primary"><?php 
echo Yii::t("aaa", 'Save');
?>
</button>
            </div>
        </div>
    </div>
Exemplo n.º 5
0
 public function afterSave($isNewRecord, $changedAttributes)
 {
     if ($isNewRecord) {
         if (isset($this->_groupRoleName)) {
             $userDomainRole = new UserDomainRole();
             $userDomainRole->user_id = $this->id;
             $userDomainRole->domain = $this->_domain;
             $userDomainRole->_groupRoleName = $this->_groupRoleName;
             $userDomainRole->save();
         }
     }
     return parent::afterSave($isNewRecord, $changedAttributes);
 }
Exemplo n.º 6
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.º 7
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.º 8
0
 public function actionGetGroupsByDomainName()
 {
     $name = $_GET['name'];
     $array = [];
     if ($name) {
         $groups = UserDomainRole::getDomainGroupsByDomainNoArray($name);
         foreach ($groups as $group) {
             $array[$group->role_name] = $group->name . " (" . $name . ")";
         }
     }
     $groups = UserDomainRole::getGlobalDomainGroupsNoArray();
     foreach ($groups as $group) {
         $array[$group->role_name] = $group->name;
     }
     echo json_encode($array);
 }
Exemplo n.º 9
0
 public function getUserDomainsRoles()
 {
     return UserDomainRole::find()->where(['domain' => $this->name])->orWhere(['domain' => null]);
 }