Grails.ExtJS.authenticate функция? - PullRequest
1 голос
/ 28 ноября 2010

У меня есть эта задача:

реализовать приложение Grails с ExtJS.

И одна часть этой задачи:

реализовать функцию аутентификации.

например, на странице main.gsp у нас есть Ext.grid.GridPanel() и кнопки "New" и "Details" в tbar.

пользователь должен ввести свой логин и пароль на login.gsp если его данные верны, его перенаправление на main.gsp

если роль пользователя - "admin", пользователь - может нажать кнопку "New" и добавить новые строки в таблицу, если роль пользователя "simply_user" - кнопка - "New" - деактивирована и пользователь может смотреть только таблицу и не более.

и теперь для меня самая большая проблема - как реализовать разные js-коды на одной странице, в зависимости от того, открывает ли пользователь эту страницу.

Кто-нибудь может дать мне представление, как это сделать?

1 Ответ

1 голос
/ 28 ноября 2010

Я не уверен, что правильно понимаю ваш вопрос, но я бы сказал:

  • в любом случае, ваш JS должен быть в состоянии знать, какие права / роль имеет текущий (то есть, чтобы включить / отключить кнопку)
  • также, вы должны убедиться, что на стороне сервера, права пользователя проверены;)

В большинстве случаев я отправляю права на приложения ExtJs в форме:

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

Я делаю это на PHP на странице макета, загруженной после входа в систему, через:

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

В приложении JS:

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

Я уверен, что вы можете сделать это легко с Groovy;)

Конечно, вы также можете отправить конфигурацию через Ext.lib.Ajax.request, если между сеансами нет перезагрузки страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...