Example #1
0
<h1><?php 
echo Yii::t('userGroupsModule.general', 'Users');
?>
</h1>
<?php 
if (Yii::app()->user->hasFlash('user')) {
    ?>
    <div class="info">
        <?php 
    echo Yii::app()->user->getFlash('user');
    ?>
    </div>
<?php 
}
$this->widget('zii.widgets.grid.CGridView', array('dataProvider' => $userModel->search(), 'id' => 'user-groups-user-grid', 'enableSorting' => false, 'enablePagination' => false, 'filter' => $userModel, 'summaryText' => false, 'selectionChanged' => 'function(id) { getPermission("' . Yii::app()->baseUrl . '", "' . UserGroupsAccess::USER . '", $.fn.yiiGridView.getSelection(id))}', 'columns' => array('username', array('name' => 'status', 'value' => 'UserGroupsLookup::resolve("status",$data->status).
				((int)$data->status === UserGroupsUser::WAITING_ACTIVATION || (int)$data->status === UserGroupsUser::PASSWORD_CHANGE_REQUEST 
				? ": <b>".$data->activation_code."</b>" : NULL).
				((int)$data->status === UserGroupsUser::BANNED ? ": <b>".$data->ban."</b>" : NULL)', 'type' => 'raw', 'filter' => CHtml::dropDownList('UserGroupsUser[status]', $userModel->status, array_merge(array('null' => Yii::t('userGroupsModule.admin', 'all')), CHtml::listData(UserGroupsLookup::model()->findAll(), 'value', 'text')))), array('name' => 'group_name', 'filter' => CHtml::listData(UserGroupsGroup::model()->findAll(array('order' => 'level')), 'id', 'groupname')))));
if (Yii::app()->user->pbac('userGroups.admin.admin')) {
    echo CHtml::ajaxLink(Yii::t('userGroupsModule.admin', 'add user'), Yii::app()->createUrl('/userGroups/admin/accessList', array('what' => UserGroupsAccess::USER, 'id' => 'new')), array('success' => 'js: function(data){ $("#user-detail").slideUp("slow", function(){ $("#user-detail").html(data).slideDown();}); }'), array('id' => 'new-user-' . time()));
}
?>
<div id="user-detail" style="display:none;"></div>
 /**
  * parameters preparation after a select is executed
  */
 public function afterFind()
 {
     switch ($this->options) {
         case !Yii::app()->user->accessRules === UserGroupsUser::ROOT_ACCESS && !isset(Yii::app()->user->accessRules['userGroups']['admin']['admin']):
             if ($this->options !== 'CONST' && $this->options !== 'BOOL' && $this->options !== 'GROUP_LIST') {
                 $options = unserialize($this->options);
                 $this->render = $options[$this->value];
             } else {
                 $this->render = $this->value;
             }
             break;
         case 'CONST':
             $this->render = $this->value;
             break;
         case 'BOOL':
             $this->render = CHtml::dropDownList("UserGroupsConfiguration[{$this->id}]", $this->value, array('TRUE' => 'TRUE', 'FALSE' => 'FALSE'));
             break;
         case 'GROUP_LIST':
             $this->render = CHtml::dropDownList("UserGroupsConfiguration[{$this->id}]", $this->value, UserGroupsGroup::groupList());
             break;
         default:
             $this->render = CHtml::dropDownList("UserGroupsConfiguration[{$this->id}]", $this->value, unserialize($this->options));
             break;
     }
     if (Yii::app()->controller->module instanceof UserGroupsModule) {
         $this->description = Yii::t('userGroupsModule.conf_description', '' . $this->description);
     }
     parent::afterFind();
 }
 /**
  * check if the group assigned to the user has a lower
  * level then the one of the user who is creating or
  * updating the user
  * This is the 'levelCheck' validator as declared in rules().
  */
 public function levelCheck($attribute, $params)
 {
     $group = UserGroupsGroup::model()->findByPk((int) $this->group_id);
     if ($group->level >= Yii::app()->user->level) {
         $this->addError('level', Yii::t('userGroupsModule.admin', 'You cannot assign to a User a Group that has a Level equal or higher then the one you belong to'));
     }
 }
 /**
  * deletes the item from the database
  * @param Array $formData
  */
 private function itemDelete($formData)
 {
     // check if the user performing the action has the permission to do it
     if (!Yii::app()->user->pbac('admin')) {
         Yii::app()->user->setFlash((int) $formData['what'] === UserGroupsAccess::USER ? 'user' : 'group', Yii::t('userGroupsModule.admin', 'You don\'t have the permission to delete any user/group'));
     } else {
         // check if the user is trying to delete a valid id
         if (Yii::app()->request->isPostRequest && $formData['id'] !== 'new' && (int) $formData['id'] !== UserGroupsUser::ROOT) {
             // load the item to delete
             if ((int) $formData['what'] === UserGroupsAccess::GROUP) {
                 $model = UserGroupsGroup::model()->findByPk((int) $formData['id']);
             } else {
                 if ((int) $formData['what'] === UserGroupsAccess::USER) {
                     $model = UserGroupsUser::model()->findByPk((int) $formData['id']);
                 }
             }
             if ($model) {
                 // check if your level is higher then the user/group you are about to delete
                 if ($model->level < Yii::app()->user->level) {
                     if ($model->delete() && UserGroupsAccess::model()->deleteAll('element = ' . $formData['what'] . ' AND element_id = ' . $formData['id'])) {
                         Yii::app()->user->setFlash((int) $formData['what'] === UserGroupsAccess::USER ? 'user' : 'group', Yii::t('userGroupsModule.admin', '{what} deleted.', array('{what}' => ucfirst($formData['displayname']))));
                     } else {
                         Yii::app()->user->setFlash((int) $formData['what'] === UserGroupsAccess::USER ? 'user' : 'group', Yii::t('userGroupsModule.admin', 'Impossible to delete the requested user/group. An Error Occurred'));
                     }
                 } else {
                     Yii::app()->user->setFlash((int) $formData['what'] === UserGroupsAccess::USER ? 'user' : 'group', Yii::t('userGroupsModule.admin', 'You cannot delete a user/group with a higher level then yours.'));
                 }
             } else {
                 Yii::app()->user->setFlash((int) $formData['what'] === UserGroupsAccess::USER ? 'user' : 'group', Yii::t('userGroupsModule.admin', 'The requested user/group does not exist and cannot be deleted.'));
             }
         } else {
             Yii::app()->user->setFlash((int) $formData['what'] === UserGroupsAccess::USER ? 'user' : 'group', Yii::t('userGroupsModule.admin', 'Invalid Request.'));
         }
     }
     $this->redirect(Yii::app()->baseUrl . '/userGroups/admin');
 }
Example #5
0
 /**
  * creates the root group and the user group
  */
 private function initializeGroups()
 {
     // root group
     $group_model = new UserGroupsGroup('installation');
     $group_model->id = UserGroupsUser::ROOT;
     $group_model->groupname = 'root';
     $group_model->level = UserGroupsUser::ROOT_LEVEL;
     $group_model->save();
     // check if the root group was created with the right id
     if ((int) $group_model->id !== UserGroupsUser::ROOT) {
         throw new CHttpException(500, Yii::t('userGroupsModule.install', 'Error during installation. Couldn\'t create root group with id {id}', array('{id}' => UserGroupsUser::ROOT)));
         Yii::app()->end();
     }
     // user group
     $group_model = new UserGroupsGroup('installation');
     $group_model->groupname = 'user';
     $group_model->home = '/userGroups';
     $group_model->level = 1;
     $group_model->save();
 }
Example #6
0
<?php 
#form used to ban user
if ((Yii::app()->user->pbac('userGroups.user.admin') || Yii::app()->user->pbac('userGroups.admin.admin')) && (int) $data->status === UserGroupsUser::ACTIVE && $data->relUserGroupsGroup->level < Yii::app()->user->level) {
    ?>
<div id="groups-group-container">
<?php 
    $form = $this->beginWidget('CActiveForm', array('id' => 'user-groups-group-form', 'enableAjaxValidation' => false));
    ?>

	<div class="row">
		<?php 
    echo $form->labelEx($data, 'group_id');
    ?>
		<?php 
    echo $form->dropDownList($data, 'group_id', CHtml::listData(UserGroupsGroup::model()->findAll(array('order' => 'level DESC')), 'id', 'groupname'));
    ?>
		<?php 
    echo $form->error($data, 'group_id');
    ?>
	</div>

<div class="row buttons">	
	<?php 
    echo CHtml::ajaxSubmitButton('Сохранить', Yii::app()->baseUrl . '/userGroups/user/changeGroup/id/' . $data->id, array('update' => '#userGroups-container'), array('id' => 'submit-mail' . $data->id . rand()));
    ?>
</div>

<?php 
    $this->endWidget();
    ?>
Example #7
0
<?php

$this->breadcrumbs = array(Yii::t('UserGroupsModule.general', 'User List'));
?>
<div id="userGroups-container">
	<div class="userGroupsMenu-container">
		<?php 
$this->renderPartial('/admin/menu', array('mode' => 'profile', 'list' => true));
?>
	</div>
	<h1>Users List</h1>

	<p>
	You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>&lt;&gt;</b>
	or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done.
	</p>
	
	<?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'user-groups-user-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'selectableRows' => 0, 'columns' => array(array('name' => 'username', 'value' => Yii::app()->user->pbac('userGroups.user.admin') || Yii::app()->user->pbac('userGroups.admin.admin') ? 'CHtml::link($data->username, Yii::app()->baseUrl ."/userGroups?u=".$data->id)' : '$data->username', 'type' => 'raw'), array('name' => 'group_name', 'filter' => CHtml::listData(UserGroupsGroup::model()->findAll(array('order' => 'level DESC')), 'groupname', 'groupname')), array('name' => 'email', 'visible' => Yii::app()->user->pbac('userGroups.user.admin')), array('name' => 'status', 'value' => '$data->status !=1 ? UserGroupsLookup::resolve("status",$data->status) : UserGroupsLookup::resolve("status",$data->status)."<br/>".CHtml::link("активировать", Array("/userGroups/user/adminActivate","id"=>$data->id), Array("class"=>"ajaxupdate"))', 'visible' => Yii::app()->user->pbac('userGroups.user.admin'), 'type' => 'raw', 'filter' => CHtml::dropDownList('UserGroupsUser[status]', $model->status, array_merge(array('null' => Yii::t('UserGroupsModule.admin', 'all')), CHtml::listData(UserGroupsLookup::model()->findAll(), 'value', 'text')))), array('class' => 'CButtonColumn', 'template' => '{delete}'))));
Yii::app()->clientScript->registerScript('ajaxupdate', "\r\n\t\$('#user-groups-user-grid a.ajaxupdate').live('click', function() {\r\n\t\t\t\$.fn.yiiGridView.update('user-groups-user-grid', {\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\turl: \$(this).attr('href'),\r\n\t\t\t\t\tsuccess: function() {\r\n\t\t\t\t\t\t\t\$.fn.yiiGridView.update('user-groups-user-grid');\r\n\t\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn false;\r\n\t});\r\n");
?>
	
</div>
<?php 
$this->widget('zii.widgets.grid.CGridView', array('dataProvider' => $dataProvider, 'ajaxUpdate' => false, 'enableSorting' => false, 'summaryText' => false, 'id' => 'rule-list', 'selectableRows' => 0, 'columns' => array(array('name' => 'Module'), array('name' => 'Controller'), array('name' => 'Read', 'type' => 'raw'), array('name' => 'Write', 'type' => 'raw'), array('name' => 'Admin', 'type' => 'raw'))));
if (Yii::app()->user->pbac('userGroups.admin.admin')) {
    ?>
	<div class="row">
		<?php 
    if ((int) $what === UserGroupsAccess::GROUP) {
        echo CHtml::label(Yii::t('userGroupsModule.general', 'Group Level'), 'UserGroupsAccess_' . $what . '_level', array('class' => 'inline')) . CHtml::dropDownList('UserGroupsAccess[' . $what . '][level]', $data->level, array_reverse(range(0, Yii::app()->user->level - 1), true));
        echo CHtml::label(Yii::t('userGroupsModule.general', 'Home'), 'UserGroupsAccess_' . $what . '_home', array('class' => 'inline')) . CHtml::dropDownList('UserGroupsAccess[' . $what . '][home]', $data->home, UserGroupsAccess::homeList());
        echo CHtml::label(Yii::t('userGroupsModule.general', 'Group Name'), 'UserGroupsAccess_' . $what . '_groupname', array('class' => 'inline'));
        echo CHtml::textField('UserGroupsAccess[' . $what . '][groupname]', $name);
    }
    if ((int) $what === UserGroupsAccess::USER) {
        echo CHtml::label(Yii::t('userGroupsModule.general', 'User Name'), 'UserGroupsAccess_' . $what . '_username', array('class' => 'inline'));
        echo CHtml::textField('UserGroupsAccess[' . $what . '][username]', $name);
        echo CHtml::label(Yii::t('userGroupsModule.general', 'Group'), 'UserGroupsAccess_' . $what . '_group_id', array('class' => 'inline')) . CHtml::dropDownList('UserGroupsAccess[' . $what . '][group_id]', $data->group_id, UserGroupsGroup::groupList());
        $home_lists = UserGroupsAccess::homeList();
        array_unshift($home_lists, Yii::t('userGroupsModule.admin', 'Group Home: {home}', array('{home}' => $data->group_home)));
        echo CHtml::label(Yii::t('userGroupsModule.general', 'Home'), 'UserGroupsAccess_' . $what . '_home', array('class' => 'inline')) . CHtml::dropDownList('UserGroupsAccess[' . $what . '][home]', $data->home, $home_lists);
        echo CHtml::label(Yii::t('userGroupsModule.general', 'Email'), 'UserGroupsAccess_' . $what . '_email', array('class' => 'inline')) . CHtml::textField('UserGroupsAccess[' . $what . '][email]', $data->email);
    }
    ?>
	</div>
	<?php 
    if ($id === 'new' && (int) $what === UserGroupsAccess::USER) {
        ?>
	<div class="row">
		<?php 
        echo CHtml::label(Yii::t('userGroupsModule.general', 'Password'), 'UserGroupsAccess_' . $what . '_password', array('class' => 'inline'));
        ?>
		<?php