• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Блокировка определенных полей в форме

  • Автор темы Автор темы medin84
  • Дата начала Дата начала
M

medin84

Здравствуйте!
Помогите пожалуйста!
Буду краток.

Мне нужно заблокировать определенные поля в форме по условию.
Условие: допустим роль пользователя не относится к [ALL]
Этих полей много и у меня есть мысль, сделать список этих полей и если условие истинно сделать их не доступными для редактирования.
Но эти пользователи могут их видеть, поэтому просто скрывать эти поля не пойдет!

Спасибо!
 
Вы бы не могли поконкретней описать суть.
Я посмотрел Help, не понял.
 
Для: medin84
В дизайнере меню Create - Section- Controlled Access

дальше интуитивно
 
Создаёшь на форме Секцию с контролируемым доступом, и в неё помешаешь поля котрые нужно блокировать.

Create/Section/Controlled Accsess
 
в свойствах поля 6-я закладка "Paragraph hide when" внизу в окошке пишем
@IsNotMember("[ALL]"; @UserRoles) и ставим галку "Hide paragraph if formula is true"

таким образом, поле будет видно только пользователям с ролью [ALL]
 
Дополнение к рекомендации: Kee_Keekkenen
IBM рекомендует создавать поле Computed for Display, в котором вычислять @UserRoles и тому подобные сложные формулы. Далее ссылаться при скрытии и доступе не на формулы, а на эти вычисляемые поля - это дает существенный выигрыш производительности в случае использования @UserRoles и ей подобных формул более одного раза на форме.
 
Дела в том что эти поля должны быть видны!
Их нелзя просто скрывать!
Суть в том что пользователи должны видеть данные! Поэтому вскырвать по формуле непойдет!
Мне нужно просто чтобы они не могли вносить в них изменения!
 
1) свойство Input Enabled
2) скрывать сами поля, показывать <computed text> - всё по формулам скрытия полей, т.е. если показывается поле - скрывается computed text, и наоборот, в зависимости от логики
 
Создаешь Controlled Access Section.
Пихаешь туда поля.
В свойствах секции на второй закладке Expand/Collapse везде (и для Editors и для Non-Editors) ставишь Auto-expand секции.
Далее идешь на третью закладку Formula. Тип Computed for Display. В формуле пишешь "[ALL]".
Дальше идешь на последнюю закладку Section Hide When. И прячешь её от всего (или условие @True, или галки везде).
Усё.

Можно еще поиграться со свойством Input Enabled, если версия клиента 7.
 
<!--QuoteBegin-Azrael+28:06:2007, 14:37 -->
<span class="vbquote">(Azrael @ 28:06:2007, 14:37 )</span><!--QuoteEBegin-->Почему именно 7? В 6.5 тоже вполне нормально работает.
[snapback]70825" rel="nofollow" target="_blank[/snapback]​
[/quote]
Только со стилем Native OS Style.
В 7-ке работает и со стилем Notes style.
 
Этот код если поставить в PostOpen или QueryOpen события формы было все ОК!
Но он не доработан!
Я не соображу как блокировать поля и вообще возможна ли это!

Понимаете ли была бы легче сообщить сотрудникам что нелзя вносить изменения и все было бы хорошо.Но народ уж такой что то да хотят подправить, исправить.

Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument

Set db = session.CurrentDatabase
Set acl = db.ACL
userNames = session.UserName
Set entry = acl.GetEntry( userNames )

fieldName(0)="SurName"	' пример
fieldName(1)="Name"
fieldName(2)="FatherName"

bool = False

If(Ubound(entry.Roles)>0)Then
Forall r In entry.Roles
If(r="[ALL]" Or r="[ABIT]")Then
bool = True
Exit Forall
End If
End Forall
End If

If(bool = False)Then
Messagebox "Вы не имеете прав на редактирование некоторых полей!"
[b][color=#FF0000]Вот в этом месте сделать чтонибудь надо, типа[/color][/b]

for i=lbound(fieldName) to ubound(fieldName)
fieldName(i).locked
next

End If
 
Спасибо вроде понял!
Вы уж простите, малость неопытен!
:)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы