Генерация JavaScript в зависимости от прав пользователя
Доброго времени суток.
Возникла следующая задача. Допустим сервис обладает несколькими группами пользователей, обладающими различными уровнями привилегий, и при работе с одним и тем же интерфейсом, каждая из групп обладает своими дополнительными возможностями. Это могут быть как дополнительные вкладки, возможность редактирования полей формы, и просто видимость каких то дополнительных элементов интерфейса. Первое что приходит в голову - это отправлять каждой из групп свой javascript код, сгенерированный на сервере, в зависимости от прав. Проблема здесь в том, что количество групп достаточно велико, чтобы для каждой из них хранить и поддерживать отдельную ветку кода. Хотелось бы иметь возможность размечать js код, и на основе разметки генерировать специфичный для группы javascript. Например: var html = "<div> Simple Div </div>"; // --priveleged { html += "<div> Priveleged Div </div>"; // --} Ext.DomQuery.select("div#target")[0].innerHTML = html; в коде введён специальный формат комментариев, начинающихся с --. На осове такой разметки на сервере может быть осуществлена компоновка кода в результате чего каждая из групп получит свой вариант функциональности Возможно уже есть какие-то решения в этой области, хотелось бы услышать ваше мнение. Спасибо |
|
Да, это очень похоже на то что нужно. К сожалению у нас используется java, поэтому продолжаю искать дальше ))
|
а как насчет передавать браузеру только информацию (не код), на основе которой сценарий будет разрешать/запрещать действия? А ненужные блоки просто не будут отображаться java'ой
|
Цитата:
|
Да, такой подход я тоже обдумывал, но мне принципиально не хочеться грузить браузер пользователя теми скриптами, которые ему в принципе не должны быть доступны...как с точки зрения размера данных, так и с точки зрения безопасности(это спорно конечно, но всё-таки).
|
Цитата:
|
В-общем я примерно придумал подход. Возможно кто-то укажет на его недостатки. Если кто-то знаком с технологией jsp в java, то он ему покажеться схожим. Заключается он в том, чтобы в специальных коментариях писать java код, потом обрабатывать файл специальным препроцессором, который код js преобразует в java файл. Сейчас будет немного понятней. Скажем у нас есть следующий js код:
var html = "<div>Simple div</div> // -- User u = request.getSession().getParameter("user"); // -- Boolean b = PermissionController.checkRights(u); // -- if(b) { html += "<div>Private div</div> // -- } Ext.DomQuery.select("div#target")[0].innerHTML = html; Такой код на сервере преобразуется в следующий java файл: response.write("var html = \"<div>Simple div</div>\""); User u = request.getSession().getParameter("user"); Boolean b = PermissionController.checkRights(u); if(b) { response.write("html += \"<div>Private div</div>\""); } response.write("Ext.DomQuery.select(\"div#target\")[0].innerHTML = html"); ... |
Цитата:
|
iDeadRat,
Не терпится вам все-таки велосипед изобрести. Хотя это дело полезное. |
Часовой пояс GMT +3, время: 01:52. |