/**
  * Создает новую модель Должности.
  * Если создание прошло успешно - перенаправляет на просмотр.
  *
  * @return void
  */
 public function actionCreate()
 {
     $roles = ['1', '4'];
     $role = \Yii::app()->user->role;
     if (array_intersect($role, $roles)) {
         $model = new RoleToUser();
         if (Yii::app()->getRequest()->getPost('RoleToUser') !== null) {
             $model->setAttributes(Yii::app()->getRequest()->getPost('RoleToUser'));
             if ($model->save()) {
                 Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'Запись добавлена!'));
                 $this->redirect((array) Yii::app()->getRequest()->getPost('submit-type', ['update', 'id' => $model->id]));
             }
         }
         $this->render('create', ['model' => $model]);
     } else {
         throw new CHttpException(403, 'Ошибка прав доступа.');
     }
 }
示例#2
0
 protected function afterSave()
 {
     parent::afterSave();
     if ($this->isNewRecord) {
         $role = new RoleToUser();
         $role->id_user = $this->id_user;
         $role->id_role = $this->setRole;
         $role->save();
         //$this->mailNewUser();
     }
     if ($this->scenario = 'newPassword') {
         //$this->mailNewUser();
     }
 }
示例#3
0
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     $model = $this->loadModel($id);
     $groups = array();
     foreach (Groups::model()->findAll() as $group) {
         $groups[$group->id] = CHtml::encode($group->name);
     }
     $selectedGroups = array();
     foreach (GroupToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
         $selectedGroups[] = $link->groupId;
     }
     $roles = array();
     foreach (Roles::model()->findAll() as $role) {
         $roles[$role->id] = CHtml::encode($role->name);
     }
     $selectedRoles = array();
     foreach (RoleToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
         $selectedRoles[] = $link->roleId;
     }
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (!isset($model->userAlias)) {
         $model->userAlias = $model->username;
     }
     if (isset($_POST['User'])) {
         $old = $model->attributes;
         $temp = $model->password;
         $model->attributes = $_POST['User'];
         if ($model->password != "") {
             $model->password = PasswordUtil::createHash($model->password);
         } else {
             $model->password = $temp;
         }
         if (empty($model->userKey)) {
             $model->userKey = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 32)), 0, 32);
         }
         if ($model->save()) {
             $profile = $model->profile;
             if (!empty($profile)) {
                 $profile->emailAddress = $model->emailAddress;
                 $profile->fullName = $model->firstName . ' ' . $model->lastName;
                 $profile->save();
             }
             if ($old['username'] != $model->username) {
                 $fieldRecords = Fields::model()->findAllByAttributes(array('fieldName' => 'assignedTo'));
                 $modelList = array();
                 foreach ($fieldRecords as $record) {
                     $modelList[$record->modelName] = $record->linkType;
                 }
                 foreach ($modelList as $modelName => $type) {
                     if ($modelName == 'Quotes') {
                         $modelName = "Quote";
                     }
                     if ($modelName == 'Products') {
                         $modelName = 'Product';
                     }
                     if (empty($type)) {
                         $list = X2Model::model($modelName)->findAllByAttributes(array('assignedTo' => $old['username']));
                         foreach ($list as $item) {
                             $item->assignedTo = $model->username;
                             $item->save();
                         }
                     } else {
                         $list = X2Model::model($modelName)->findAllBySql("SELECT * FROM " . X2Model::model($modelName)->tableName() . " WHERE assignedTo LIKE '%" . $old['username'] . "%'");
                         foreach ($list as $item) {
                             $assignedTo = explode(", ", $item->assignedTo);
                             $key = array_search($old['username'], $assignedTo);
                             if ($key >= 0) {
                                 $assignedTo[$key] = $model->username;
                             }
                             $item->assignedTo = implode(", ", $assignedTo);
                             $item->save();
                         }
                     }
                 }
                 $profile = Profile::model()->findByAttributes(array('username' => $old['username']));
                 if (isset($profile)) {
                     $profile->username = $model->username;
                     $profile->save();
                 }
             }
             foreach (RoleToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
                 $link->delete();
             }
             foreach (GroupToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
                 $link->delete();
             }
             if (isset($_POST['roles'])) {
                 $roles = $_POST['roles'];
                 foreach ($roles as $role) {
                     $link = new RoleToUser();
                     $link->roleId = $role;
                     $link->type = "user";
                     $link->userId = $model->id;
                     $link->save();
                 }
             }
             if (isset($_POST['groups'])) {
                 $groups = $_POST['groups'];
                 foreach ($groups as $group) {
                     $link = new GroupToUser();
                     $link->groupId = $group;
                     $link->userId = $model->id;
                     $link->username = $model->username;
                     $link->save();
                 }
             }
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('update', array('model' => $model, 'groups' => $groups, 'roles' => $roles, 'selectedGroups' => $selectedGroups, 'selectedRoles' => $selectedRoles));
 }
示例#4
0
 /**
  * A catch all page for roles.
  *
  * This action renders a page with forms for the creation, editing, and deletion
  * of roles.  It also displays a grid with all user created roles (default
  * roles are not included and cannot be edited this way).
  */
 public function actionManageRoles()
 {
     $dataProvider = new CActiveDataProvider('Roles');
     $roles = $dataProvider->getData();
     $arr = array();
     foreach ($roles as $role) {
         $arr[$role->name] = $role->name;
     }
     $temp = Workflow::model()->findAll();
     $workflows = array();
     foreach ($temp as $workflow) {
         $workflows[$workflow->id] = $workflow->name;
     }
     $model = new Roles();
     $model->timeout = 60;
     if (isset($_POST['Roles'])) {
         $model->attributes = $_POST['Roles'];
         if (!isset($_POST['viewPermissions'])) {
             $viewPermissions = array();
         } else {
             $viewPermissions = $_POST['viewPermissions'];
         }
         if (!isset($_POST['editPermissions'])) {
             $editPermissions = array();
         } else {
             $editPermissions = $_POST['editPermissions'];
         }
         if (isset($_POST['Roles']['users'])) {
             $users = $model->users;
         } else {
             $users = array();
         }
         $model->users = "";
         $model->timeout *= 60;
         if ($model->save()) {
             foreach ($users as $user) {
                 $role = new RoleToUser();
                 $role->roleId = $model->id;
                 if (!is_numeric($user)) {
                     $userRecord = User::model()->findByAttributes(array('username' => $user));
                     $role->userId = $userRecord->id;
                     $role->type = 'user';
                 } else {
                     $role->userId = $user;
                     $role->type = 'group';
                 }
                 /* end x2temp */
                 $role->save();
             }
             $fields = Fields::model()->findAll();
             $temp = array();
             foreach ($fields as $field) {
                 $temp[] = $field->id;
             }
             $both = array_intersect($viewPermissions, $editPermissions);
             $view = array_diff($viewPermissions, $editPermissions);
             $neither = array_diff($temp, $viewPermissions);
             foreach ($both as $field) {
                 $rolePerm = new RoleToPermission();
                 $rolePerm->roleId = $model->id;
                 $rolePerm->fieldId = $field;
                 $rolePerm->permission = 2;
                 $rolePerm->save();
             }
             foreach ($view as $field) {
                 $rolePerm = new RoleToPermission();
                 $rolePerm->roleId = $model->id;
                 $rolePerm->fieldId = $field;
                 $rolePerm->permission = 1;
                 $rolePerm->save();
             }
             foreach ($neither as $field) {
                 $rolePerm = new RoleToPermission();
                 $rolePerm->roleId = $model->id;
                 $rolePerm->fieldId = $field;
                 $rolePerm->permission = 0;
                 $rolePerm->save();
             }
         } else {
             foreach ($model->getErrors() as $err) {
                 $errors = $err;
             }
             $errors = implode(',', $errors);
             Yii::app()->user->setFlash('error', Yii::t('admin', "Unable to save role: {errors}", array('{errors}' => $errors)));
         }
         $this->redirect('manageRoles');
     }
     $this->render('manageRoles', array('dataProvider' => $dataProvider, 'model' => $model, 'roles' => $arr, 'workflows' => $workflows));
 }
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     $model = $this->loadModel($id);
     $groups = array();
     foreach (Groups::model()->findAll() as $group) {
         $groups[$group->id] = $group->name;
     }
     $selectedGroups = array();
     foreach (GroupToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
         $selectedGroups[] = $link->groupId;
     }
     $roles = array();
     foreach (Roles::model()->findAll() as $role) {
         $roles[$role->id] = $role->name;
     }
     $selectedRoles = array();
     foreach (RoleToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
         $selectedRoles[] = $link->roleId;
     }
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['User'])) {
         $temp = $model->password;
         $model->attributes = $_POST['User'];
         if ($model->password != "") {
             $model->password = md5($model->password);
         } else {
             $model->password = $temp;
         }
         if ($model->save()) {
             foreach (RoleToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
                 $link->delete();
             }
             foreach (GroupToUser::model()->findAllByAttributes(array('userId' => $model->id)) as $link) {
                 $link->delete();
             }
             if (isset($_POST['roles'])) {
                 $roles = $_POST['roles'];
                 foreach ($roles as $role) {
                     $link = new RoleToUser();
                     $link->roleId = $role;
                     $link->userId = $model->id;
                     $link->save();
                 }
             }
             if (isset($_POST['groups'])) {
                 $groups = $_POST['groups'];
                 foreach ($groups as $group) {
                     $link = new GroupToUser();
                     $link->groupId = $group;
                     $link->userId = $model->id;
                     $link->username = $model->username;
                     $link->save();
                 }
             }
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('update', array('model' => $model, 'groups' => $groups, 'roles' => $roles, 'selectedGroups' => $selectedGroups, 'selectedRoles' => $selectedRoles));
 }
 public function actionEditRole()
 {
     $model = new Roles();
     if (isset($_POST['Roles'])) {
         $id = $_POST['Roles']['name'];
         $model = Roles::model()->findByAttributes(array('name' => $id));
         $id = $model->id;
         if (!(isset($_POST['viewPermissions']) && isset($_POST['editPermissions']))) {
             $this->redirect('manageRoles');
         }
         $viewPermissions = $_POST['viewPermissions'];
         $editPermissions = $_POST['editPermissions'];
         if (isset($_POST['users'])) {
             $users = $_POST['users'];
         } else {
             $users = array();
         }
         $model->users = "";
         if ($model->save()) {
             $userRoles = RoleToUser::model()->findAllByAttributes(array('roleId' => $model->id));
             foreach ($userRoles as $role) {
                 $role->delete();
             }
             $permissions = RoleToPermission::model()->findAllByAttributes(array('roleId' => $model->id));
             foreach ($permissions as $permission) {
                 $permission->delete();
             }
             foreach ($users as $user) {
                 $userRecord = User::model()->findByAttributes(array('username' => $user));
                 $role = new RoleToUser();
                 $role->roleId = $model->id;
                 if (!is_numeric($user)) {
                     $userRecord = User::model()->findByAttributes(array('username' => $user));
                     $role->userId = $userRecord->id;
                     $role->type = 'user';
                 } else {
                     $role->userId = $user;
                     $role->type = 'group';
                 }
                 /* end x2temp */
                 $role->save();
             }
             $fields = Fields::model()->findAll();
             $temp = array();
             foreach ($fields as $field) {
                 $temp[] = $field->id;
             }
             $both = array_intersect($viewPermissions, $editPermissions);
             $view = array_diff($viewPermissions, $editPermissions);
             $neither = array_diff($temp, $viewPermissions);
             foreach ($both as $field) {
                 $rolePerm = new RoleToPermission();
                 $rolePerm->roleId = $model->id;
                 $rolePerm->fieldId = $field;
                 $rolePerm->permission = 2;
                 $rolePerm->save();
             }
             foreach ($view as $field) {
                 $rolePerm = new RoleToPermission();
                 $rolePerm->roleId = $model->id;
                 $rolePerm->fieldId = $field;
                 $rolePerm->permission = 1;
                 $rolePerm->save();
             }
             foreach ($neither as $field) {
                 $rolePerm = new RoleToPermission();
                 $rolePerm->roleId = $model->id;
                 $rolePerm->fieldId = $field;
                 $rolePerm->permission = 0;
                 $rolePerm->save();
             }
         }
         $this->redirect('manageRoles');
     }
     $this->render('editRole', array('model' => $model));
 }