2010-11-28 21 views
1

J'ai cette tâche:Fonction Grails.ExtJS.authenticate?

réaliser l'application Grails avec ExtJS.

Et une partie de cette tâche:

réaliser la fonction d'authentifier.

par exemple sur la page main.gsp nous avons Ext.grid.GridPanel() et le bouton "New" et "Details" dans tbar.

utilisateur doit insérer son login et mot de passe sur login.gsp si ses données est correcte son redirect à main.gsp

si le rôle de l'utilisateur - « admin », l'utilisateur - peut cliquer sur le bouton « New » et a ajouté de nouvelles lignes dans le tableau, si le rôle de l'utilisateur "simply_user" - le bouton - "New" - désactivez et l'utilisateur peut seulement regarder la table et pas plus.

et maintenant pour moi le plus gros problème - comment implémenter le code js différent sur une page, selon si un utilisateur ouvre cette page.

Quelqu'un peut me donner une idée de comment le faire?

Répondre

1

Je ne suis pas sûr je comprends bien votre question, mais je dirais:

  • dans tous les cas, votre JS doit être en mesure de savoir quels droits/rôle dont l'actuel a (c.-à- activer/désactiver le bouton)
  • aussi, vous devriez vous assurer que côté serveur, les droits des utilisateurs sont vérifiés;)

ce que je fais, la plupart du temps, envoie des droits à l'ExtJs Apps sur le formulaire:

MyApp.Config = { "user" : { "name" : "john doe", "roles" : ["admin"], ... } }; 

Je le fais en PHP dans la page de mise en page chargée après la connexion, via:

<?php 
$cfg = array("user" => array("name" => $user->name, "roles" => $user->roles); 
printf('<script>MyApp.Config = %s;</script>', json_encode($cfg)); 

Dans l'application JS:

var isAdmin = MyApp.Config.user.roles.indexOf('admin')>=0); 
var button = new Ext.Button({text:'New', disabled : !isAdmin}); 

Je suis sûr que vous pouvez le faire facilement avec groovy;)

Bien sûr, vous pouvez également envoyer une configuration via un Ext.lib.Ajax.request s'il n'y a pas de rechargement de page entre les sessions.