Обсуждение:Проверка пользователя на принадлежность группе
5 (1)
Обсуждение:Проверка пользователя на принадлежность группе ( Обсуждение примера 09.01.2004 07:04 )
0(0)macro ПроверитьГруппуПользователей(aOper, aGroup);
Вернет True если aOper в группе aGroup.
Посмотреть пример
>> Ответитьага, идеи витают в воздухе ;) ( dd 30.01.2004 19:16 )
0(0)странно, но в нескольких банках я видел макросы, в тексте которых для каких-то проверок явно перечислялись номера операционистов :)))))
==============
file lib1_listgrup(listgrup);
file lib1_opergrup(opergrup);
macro MemberOf(ss, sss) /* проверка группы пользователя
ss - название группы (текст)
sss - номер юзера */
if (ValType(sss) == V_UNDEF)
sss = {oper};
end;
rewind(lib1_listgrup);
while (next(lib1_listgrup))
if (lib1_listgrup.Name == ss)
lib1_opergrup.GroupNum = lib1_listgrup.Number;
lib1_opergrup.Oper = sss;
if (GetEQ(lib1_opergrup))
return true;
end;
end;
end;
return false;
end;
===============
>> ОтветитьЯ для этого пользуюсь следующими двумя функциями (+) ( григ 02.02.2004 07:48 )
1(1)Переменные в функциях объявлены как local, что исключает возможные конфликты с внешними глобальными переменными.
/*Проверить является ли опер членом группы с наименованием, содержащим заданный образец*/ macro hl_OperIsMemberOfGroup(code,obr) /*ищем группы, наименование которых содержит заданное слово*/ local var listgrup,opergrup,cont; listgrup=TBFile("listgrup.dbt","R",0); opergrup=TBFile("opergrup.dbt","R",0); listgrup.Rewind; cont=listgrup.next; while(cont) if(index(StrUpr(listgrup.Rec.Name),StrUpr(obr))>0) opergrup.Rec.GroupNum=listgrup.Rec.Number; opergrup.Rec.Oper=code; if(opergrup.GetEQ) return true; end; end; cont=listgrup.next; end; return false; end; /*Вернуть строку через ; оперов, являющихся членами группы с наименованием, содержащим заданный образец*/ macro hl_GetOpersOfGroup(obr) /*ищем группы, наименование которых содержит заданное слово*/ local var listgrup,opergrup,cont,t,cont1; listgrup=TBFile("listgrup.dbt","R",0); opergrup=TBFile("opergrup.dbt","R",0); t=";"; listgrup.Rewind; cont=listgrup.next; while(cont) if(index(StrUpr(listgrup.Rec.Name),StrUpr(obr))>0) /*считываем номера оперов*/ opergrup.Rec.GroupNum=listgrup.Rec.Number; opergrup.Rec.Oper=0; cont1=opergrup.GetGE; while(cont1 and (opergrup.Rec.GroupNum==listgrup.Rec.Number)) t=t+string(opergrup.Rec.Oper)+";"; cont1=opergrup.Next; end; end; cont=listgrup.next; end; return t; end;
>> ОтветитьR-style обещал сделать какую-то систему для проверки прав... ( KaMPiLeR 02.02.2004 11:13 )
0(0)учитесь!!!
>> Ответить