Пример #1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = User::find()->joinWith('authAssignment.authItem');
     $pageSize = isset($_GET['per-page']) ? $_GET['per-page'] : \Yii::$app->params['user.defaultPageSize'];
     // Aca se cocina lo que deberia ver el usuario segun su rol
     $rol = User::getRol(Yii::$app->user->getId());
     // el administrador no puede ver al usuario consejo, el consejo puede ver a todos,
     // el intendente no puede ver al consejo ni administrador
     switch ($rol->name) {
         case (string) "administrador":
             $query->andFilterWhere(['not in', 'item_name', ['consejo']]);
             break;
         case (string) "consejo":
             break;
         case (string) "intendente":
             $query->andFilterWhere(['not in', 'item_name', ['administrador', 'consejo']]);
             break;
         default:
             $query->andFilterWhere(['not in', 'item_name', ['intendente', 'administrador', 'consejo']]);
     }
     $query->andFilterWhere(['status' => User::STATUS_ACTIVE]);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => $pageSize], 'sort' => ['defaultOrder' => ['id' => SORT_DESC], 'enableMultiSort' => true]]);
     // Agregado a mano, para que incluya el ordenamiento por descCliente
     $dataProvider->sort->attributes['descRolUsuario'] = ['asc' => ['auth_item.description' => SORT_ASC], 'desc' => ['auth_item.description' => SORT_DESC]];
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'status' => $this->status, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'acceso_externo' => $this->acceso_externo]);
     $query->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'auth_item.description', $this->descRolUsuario]);
     return $dataProvider;
 }
Пример #2
0
 public static function listaRoles()
 {
     // devuelve array de roles filtrado por el rol del usuario activo
     $rol = User::getRol(Yii::$app->user->getId());
     // se traen todos los roles
     $auth = Yii::$app->authManager;
     $roles = $auth->getRoles();
     // aca se filtran
     switch ($rol->name) {
         case (string) "intendente":
             unset($roles['administrador'], $roles['consejo']);
             break;
         case (string) "administrador":
             unset($roles['consejo']);
             break;
         case (string) "consejo":
             break;
         default:
             unset($roles['intendente'], $roles['administrador'], $roles['consejo']);
     }
     return $roles;
 }
Пример #3
0
	<div class='row'>

		<div class="col-md-9">
			
			<div class="user-form">
				<?php 
echo DetailView::widget(['model' => $model, 'attributes' => ['id', 'username']]);
?>
        
				<?php 
$form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);
?>
				
				<div class="form-group">
				<?php 
$rol = User::getRol($model->id);
echo Html::label('Rol', 'rol', ['class' => 'control-label']);
//Yii::trace(ArrayHelper::map(AuthAssignment::listaRoles(), 'name', 'description'));
echo Html::dropDownList('rol', $rol->name, ArrayHelper::map(AuthAssignment::listaRoles(), 'name', 'description'), ['id' => 'rol', 'class' => 'form-control']);
?>
				<?php 
echo $form->field($model, 'email')->textInput(['maxlength' => true]);
?>
				
				<?php 
echo $form->field($model, 'acceso_externo')->dropDownList(User::getSiNo());
?>
				<?php 
if ($model->isNewRecord) {
    echo $form->field($model, 'foto')->fileInput();
}
Пример #4
0
    /* Opcion de salir por defecto de yii2
       $menuItems[] = [
           'label' => 'Salir (' . Yii::$app->user->identity->username . ')',
           'url' => ['/site/logout'],
           'linkOptions' => ['data-method' => 'post']
       ];
       */
    $u = User::findOne(Yii::$app->user->getId());
    $sinImg = Yii::$app->urlManager->createUrl('images/sinfoto.png');
    if (!empty($u->foto)) {
        $imgFile = Yii::$app->urlManager->createUrl('images/usuarios/' . $u->foto);
        $contenido = Html::img($imgFile, ['class' => 'img-thumbnail', 'onerror' => "this.src='{$sinImg}'"]);
    } else {
        $contenido = Html::img($sinImg, ['class' => 'img-thumbnail']);
    }
    $headerPopover = '<p><i>Usuario: ' . Yii::$app->user->identity->username . '</i></p>' . '<p><i>' . User::getRol(Yii::$app->user->getId())->description . '</i></p>' . '<p><i>IP: ' . Yii::$app->request->userIp . '</i></p>';
    $userPopover = '<li class="dropdown"><div class="navbar-form">' . PopoverX::widget(['header' => $headerPopover, 'placement' => PopoverX::ALIGN_BOTTOM, 'type' => Popoverx::TYPE_WARNING, 'content' => $contenido, 'footer' => Html::a('Cerrar sesión &raquo;', ['/site/logout'], ['data-method' => 'post', 'class' => 'btn btn-sm btn-warning']), 'toggleButton' => ['label' => Html::tag('span', '', ['class' => 'glyphicon glyphicon-lock']), 'class' => 'btn btn-sm btn-default']]) . '</div></li>';
    $menuItems[] = $userPopover;
}
echo Nav::widget(['options' => ['class' => 'navbar-nav navbar-right'], 'items' => $menuItems, 'encodeLabels' => false]);
NavBar::end();
?>

    <div class="container" >
        <?php 
echo Breadcrumbs::widget(['links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : []]);
?>
		

        <?php 
// el alert se deberia aplicar en todas las paginas, excepto las que definen el parametro noAlerts,