Grails 2.4.5 qui. Sto cercando di implementare il seguente comportamento UX per i miei SPG:Intercettazione di azioni GSP Grails sul lato client o server
- Se un utente ha il permesso di fare clic su un pulsante, può farlo; tuttavia
- Se l'utente non dispone di l'autorizzazione per fare clic su un pulsante, quindi quando fa clic sul pulsante, viene visualizzato un messaggio banner (flash?) nella parte superiore dello schermo con uno sfondo rosa/rosato/rosso che indica " non hai il permesso di compiere questa azione '
per determinare se l'utente ha il permesso richiesto, ho accesso a funzionalità sia dal Groovy e strati/taglib SPG.
Dallo strato Groovy/regolatore:
SecurityUtils.hasPermission(String permission)
Ex: SecurityUtils.hasPermission('UPDATE_BUZZ')
Dallo strato GSP/taglib:
<sec:hasPermission permission="<permission name>">???</sec:hasPermission>
Ex: <sec:hasPermission permission="UPDATE_BUZZ">???</sec:hasPermission>
Così, in tali due disponibili meccanismi di controllo di accesso, e dato il seguente controller:
class FizzController {
BuzzService BuzzService
def buzz() {
SomeData dataModel = buzzService.getModel(params)
render(view: 'buzz', model: [ dataModel: dataModel ])
}
}
... dove buzz.gsp
è:
<!-- Lots of HTML/GSP here -->
<g:submitButton name="update" value="Update" />
<!-- Lots more HTML/GSP down here -->
Considerato tutto questo, la mia domanda è: Come/dove dovrei: (1) rispondere alla 'update
' handler clic del pulsante, (2) eseguire il controllo di accesso, e (3) rendere l'errore/messaggio banner/flash? Esempio di codice (anche pseudo-codice) sarebbe davvero fantastico!
Grazie @ashipj (+1) - sì, sfortunatamente ho ancora bisogno di visualizzare il pulsante per l'utente, ** anche ** se non hanno il permesso di fare clic su + eseguirlo. ** Ti dispiacerebbe aggiornare la tua risposta con alcuni esempi di codice/pseudo-codice, in particolare: (1) aggiungere la classe extra al pulsante e (2) catturare l'evento "orologio" per quella classe? ** Io non sono solo comprensione per qualche motivo ... grazie ancora così tanto! – smeeb