Assegnazione Ruolo Utente Durante La Sua Creazione

Ciao a tutti,

sto usando le estensioni rights e yii-user.

Vorrei sapere se è possibile assegnare un ruolo all’utente (continuando ad usare rights) al momento della creazione dell’utente stesso, tramite un menu a tendina, al posto di farlo dal pannello amministrativo di rights.

grazie,

Lilli

di solito l’utilizzo che ne faccio è di questo tipo:

l’utente che si registra ha un ruolo definito nell’applicazione, una volta registrato

nell’action actionRegistration ho questo codice:




if ($model->save()) {

	$profile->id=$model->id;

	$profile->save();

	//Assegno ruolo di rights all'utente registrato.

	$authenticatedName = Rights::module()->authenticatedName;

	Rights::assign($authenticatedName, $model->id);

....



a te serve questo?

oppure vorresti far scegliere all’utente che si registra, di assegnarsi un ruolo da solo?

nel secondo caso ho trovato questo snippet di codice, che potrebbe esserti utile:




<?php

if (Yii::app()->user->isSuperuser) {

       $all_roles=new RAuthItemDataProvider('roles', array( 

	'type'=>2,

	));

      $data=$all_roles->fetchData();

?>

    <div>

        <label for="type_id">Type</label>

        <?php echo CHtml::dropDownList("Type",'',CHtml::listData($data,'name','name'));?> 

    </div>

<?php

}

?>



chiaramente tolto l’if (Yii::app()->user->isSuperuser) {

grazie della risposta.

nel mio caso solo l’amministratore può creare utenti, tramite la voce “crea nuovo utente” fornita dall’estensione yii-user.

quindi quello che vorrei è un campo in più (dropdown), in cui nel momento della creazione, decido che ruolo dare all’utente che sto creando. questo ruolo ovviamente deve essere registrato in rights (per intenderci nella tabella AuthAssignment).

ok ho testato il codice,funziona. in questi giorni non avevo nulla sottomano.




<?php

if (Yii::app()->user->isSuperuser) {

	

       $all_roles=new RAuthItemDataProvider('roles', array( 

        'type'=>2,

        ));

      $data=$all_roles->fetchData();

?>

    <div>

        <label for="type_id">Type</label>

        <?php echo CHtml::dropDownList("Type",'',CHtml::listData($data,'name','name'));?> 

    </div>

<?php

}

?>



e poi nel controller recuperi il valore dal post e fai quello che vuoi, come l’esempio che ti suggerivo su.

fai attenzione a fare anche quest’import nel config/main.php




'application.modules.rights.components.dataproviders.*',



altrimenti Yii non vede la classe RAuthItemDataProvider.

grazie mille! funziona. :)

in alternativa c’è anche questa possibilità (senza bisogno dell’import):


<?php echo $form->dropDownList($model, 'role', 

Rights::getAuthItemSelectOptions('2',array('Admin'))); ?>

nel secondo parametro i valori da escludere

e poi nel controller:




if($model->save()){

$auth=Yii::app()->authManager;

$auth->assign($model->role,$model->id);

$this->redirect(array('view','id'=>$model->id));

}