Форум: "Начинающим";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];
ВнизРоли и привилегии Найти похожие ветки
← →
Анатолий_1987 (2008-07-19 10:46) [0]Добрый день! Столкнулся с такой задачей, у каждого пользователя в моем проекте должны быть привилегии, объекты на формах должны быть доступны только для определенных юзеров. Я сейчас никак не могу сообразить как это все реализовать. У меня есть таблица юзеров, есть таблица для ролей, только пока, не знаю что в ней хранить, все что пришло в голову это хранить имя объекта и имя формы на котром он расположен. Затем при Activate формы бегать по объектам формы и проверять в таблице состояние True или False для конкретного юзера. Думаю не очень хороший метод, по этому хочу узнать как поступают опытные программисты.
Для примера у меня на форме есть Кнопка Button1 - у которого событие OnClick (ShowMessage("Hello"))
Что именно этого объекта мне нужно хранить в таблице с ролями, что бы в дальнейшем я бы мог проверять включить или выключить этот объект?
Заранее спасибо.
← →
Loginov Dmitry © (2008-07-19 11:06) [1]> Что именно этого объекта мне нужно хранить в таблице с ролями,
> что бы в дальнейшем я бы мог проверять включить или выключить
> этот объект?
храни что угодно. Лишь бы тебе этого было достаточно для дальнейшей работы.
Я бы, к примеру, хранил следующим образом:
TMyForm.Button1.Enabled = ...
TMyForm.Button1.Visible = ...
TMyForm.MenuItem1.ShortCut = ....
этой информации достаточно для обращения к любому именованному объекту на форме с использованием RTTI.
Естественно, можно придумать любой другой метод, который будет по душе.
← →
Анатолий_1987 (2008-07-19 11:29) [2]Теперь ясно, спасибо.
← →
Правильный$Вася (2008-07-20 19:57) [3]для таких целей очень подходит TAction
← →
Dennis I. Komarov © (2008-07-21 09:20) [4]Я бы хранил:
1. Юзеры
2. Группы (давать права на группы проще нежели каждому юзеру по отдельности)
3. Объекты
4. Таблица прав (соответствие юзеров (групп) и объектов
← →
stas © (2008-07-21 17:10) [5]я храню так
Поля:
роль
класс формы
имя объекта на форме
свойство объекта (Enabled,Visible)
значение
Часто используемые свойства и их значения сделал списком в интерфейсе программы.
и с помощью этой процедуры управляю объектами
USES ...typInfo...
...
procedure SetPropertyValue(AObject:TObject;AProperty:String;AValue:Variant);
var
pp:ppropinfo;
s:string;
obj:TObject;
begin
pp:=getpropinfo (AObject,AProperty);
if pp<>nil then
case pp.PropType^.Kind of
tkInteger:setordprop(AObject,AProperty,strtoint(AValue));
tkClass:
begin
Obj:=GetObjectProp (AObject,AProperty);
if (obj is TStrings) then TStrings(Obj).Text:=AValue
else setordprop(AObject,AProperty,strtoint(AValue));
end;
tkString, tkLString, tkWString:setstrprop(AObject,AProperty,AValue);
tkEnumeration:setEnumprop(AObject,AProperty,AValue);
tkFloat:setfloatprop(AObject,AProperty,strtofloat(AValue));
tkVariant: SetVariantProp (AObject,AProperty,strtofloat(AValue));
end;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c