Questa è una domanda sull'utilizzo di RBAC in Yii2.Yii2 RBAC Rule Feedback/Message
Finora ho trovato che funziona piuttosto bene e soddisfacente, tuttavia c'è una caratteristica fondamentale che mi manca: la possibilità per le regole Yii2 di fornire "feedback" in modo simile a come i validatori Yii2 impostano i messaggi di errore per spiegare perché la validazione è fallita. Sto cercando un modo per fornire una sorta di feedback sul perché il permesso non è stato concesso.
In particolare, il metodo can() restituirà un valore booleano tipo , che va bene, ma quando si controlla il permesso non abbiamo idea di perché esattamente l'utente non è stato concesso che un particolare permesso.
Per dare un esempio più pratico. Diciamo che stiamo cercando di determinare se l'utente corrente può inviare un commento. Vorremmo solito fare qualcosa di simile:
if (Yii::$app->user->can('postComment',['comment'=>$comment])) {
$comment->post();
} else {
throw new ForbiddenHttpException('Sorry m8, you cant do this. No idea why tho!');
}
E le grandi opere, ma come mostrato nell'esempio che davvero non hanno idea del perché l'utente non è in grado di pubblicare il commento. Può essere un numero qualsiasi di motivi, ad esempio perché il thread è bloccato o perché non hanno il permesso di postare in una certa categoria o perché non hanno una reputazione sufficientemente alta, ecc. Ma vogliamo dire all'utente perché! Quindi la mia domanda è, come otteniamo quel feedback dall'RBAC di Yii2?
Normalmente RBAC fornisce l'eccezione 'Forbidden' quando l'utente non dispone dell'autorizzazione oppure è possibile scrivere un messaggio personalizzato o utilizzare try-catch. –
RBAC in Yii2 non fa nulla del genere. Restituisce solo una risposta SÌ/NO (booleana). Spetta al programmatore lanciare un'eccezione basata su quelle informazioni minime. – mae
Invia errore solo se l'utente non ha il permesso postComment. –