Oi, tenho uma duvida a respeito do search na model.
Suponha q eu tenho um almoxarifado onde cada usuário possa criar requisições de materiais. Contudo, se o usuário não for administrador/moderador, ele só poderá ver as requisições na admin q tenham sido feitas por ele ( de outra forma: Ele nao pode ver, na admin, todas as requisicoes da tabela ‘requisicao’, apenas aquelas cujo ‘usuario_idusuario’ seja a dele ). Considerando uma chave extrangeira usuario_idusuario na tabela ‘requisicao’, eu não to conseguindo restringir esse retorno de valores na admin. Já tentei alterar a search na model ‘requisicao’, e acho q é por esse caminho, mas n consegui ainda.
Na verdade, n precisa mais. Consegui resolver sozinho, mas segue o search() final:
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
if(Yii::app()->user->getState('tipousuario') != 3) // Se o usuario for administrador OU moderador...
{
$criteria->compare('idrequisicao',$this->idrequisicao);
$criteria->compare('data',$this->data,true);
$criteria->compare('quantmaterial',$this->quantmaterial);
$criteria->compare('usuario_idusuario',$this->usuario_idusuario);
$criteria->compare('setor_codigo',$this->setor_codigo,true);
$criteria->compare('material_idmaterial',$this->material_idmaterial);
$criteria->compare('status_idstatus',$this->status_idstatus);
}
else // ...Caso contrário o usuário é comum.
{
$criteria->compare('idrequisicao',$this->idrequisicao);
$criteria->compare('data',$this->data,true);
$criteria->compare('quantmaterial',$this->quantmaterial);
$criteria->compare('usuario_idusuario',$this->usuario_idusuario);
$criteria->compare('setor_codigo',$this->setor_codigo,true);
$criteria->compare('material_idmaterial',$this->material_idmaterial);
$criteria->compare('status_idstatus',$this->status_idstatus);
$criteria->addCondition("usuario_idusuario = :u");
$criteria->params[':u'] = Yii::app()->user->getState('idusuario');
}
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('idrequisicao',$this->idrequisicao);
$criteria->compare('data',$this->data,true);
$criteria->compare('quantmaterial',$this->quantmaterial);
$criteria->compare('usuario_idusuario',$this->usuario_idusuario);
$criteria->compare('setor_codigo',$this->setor_codigo,true);
$criteria->compare('material_idmaterial',$this->material_idmaterial);
$criteria->compare('status_idstatus',$this->status_idstatus);
if(Yii::app()->user->getState('tipousuario') != 3){
$criteria->compare('usuario_idusuario',Yii::app()->user->getState('idusuario'));
}
}
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}