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; } }
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(); } } } }
$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>
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); }
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; }
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; }
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); }
public function getUserDomainsRoles() { return UserDomainRole::find()->where(['domain' => $this->name])->orWhere(['domain' => null]); }