• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

доступ на редактирвоание

  • Автор темы nadezdaMP
  • Дата начала
N

nadezdaMP

есть база данных с информацией о всех пользователях системы.
каждый пользователь может просматривать в нем инфо других, но редактировать может только свою.
нужно сделать так чтобы пользователь мог редактировать свои данные в базе контактов из другой базы. с редактированием/сохранением разобралась, но
если зайти под администратором системы, то при выполнении скрипта сделанные изменения сохраняются, если зайти под обычным пользователем и выполнить тот же самый скрипт то изменения в базе контактов не происходят.

вопрос - как сделать доступ, как сохранить изменения, сделанные пользователем из другой базы?
подскажите идею пожалуйста :)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
принцып сохранения не важно в какой базе, всё одинаково
я так понимаю что "доступ" вы делаете чисто скриптом а не через ридерс/авторс поля?
 
N

nadezdaMP

все верно. я просто не понимаю почему под админом изменения остаются, а под пользователем - нет, хотя у пользователя есть возможность редактирвоания своих данных из базы контактов. а как это можно сделать через ридерс/авторс поля?
 
T

TIA

Пользователи по ACL, вероятно авторы, а админ -- редактор или выше. В этом случае пользователь может редактировать документ только если он указан в одном из авторских полей (или имеет роль, указанную в авторском поле). А на редактора по ACL или выше данное ограничение не распространяется. Вобщем, читайте в хелпе как AUTHORS/READERS поля работают.
 
K

Klido

+это по умолчанию достаточно хорошо реализовано в стандартной АК организации - можно изучить на примере
 
N

nadezdaMP

изучила) у каждого пользователя в контакте есть поле Owner типа Authors, где прписано его полное имя.
доступ к базе по умолчанию Authors. это понятно. причем пользователь может редактировать только определенные поля своего контакта, не все.
есть другая база данных. в ней по пользователь также может редактировать только свой контакт в АК, (там есть кнопочка - редактировать свой контакт) но изменения не сохраняются. ну не понимаю я почему и как сделать так чтоб сохранялось =) метод научного тыка не помог =)
 
K

Klido

как именно происходит редактирование? открывается док или диалог? "при выполнении скрипта" - можно кусок этого скрипта или полностью?
в Save параметры правильно стоят? если диалогом - параметры диалога по изменению полей - правильные?
 
N

nadezdaMP

по кнопке открывается форма на редактирвоание, на форме поле SaveOptions = 0
код кнопки следующий
[codebox]
Sub Click(Source As Button)
...
Set s = New NotesSession
Set ws = New NotesUIWorkspace
Set db = s.CurrentDatabase

Set tddb = s.GetDatabase("domino", "names")
Set view = tddb.GetView("ForHomeBase")
Set name = s.CreateName(s.UserName)
If name.Abbreviated <>"" Then
Set vdoc = view.GetDocumentByKey(name.Abbreviated, False)
Set doc = db.CreateDocument
Call vdoc.CopyAllItems(doc, True)
Call ws.EditDocument(False, doc)
End If
End Sub
[/codebox]

на форме есть кнопа Сохранить, по которой выполняется код
[codebox]
Sub Click(Source As Button)
...
Set s = New NotesSession
Set workspace = New NotesUIWorkspace
Set uid = workspace.CurrentDocument
Set uidoc = uid.Document

Set db = s.CurrentDatabase
Set tddb = s.GetDatabase("domino", "names")
Set view = tddb.GetView("ForHomeBase")
Set nam = s.CreateName(s.UserName)
If nam.Abbreviated <>"" Then
Set vdoc = view.GetDocumentByKey(nam.Abbreviated, False)
'ради эксперимента пытаюсь изменить доступное для пользователя поле в его контакте, но изменения не сохраняются
Call vdoc.ReplaceItemValue("OfficeCity", "55555")
' вобще предполагается что то вроде Call uidoc.CopyAllItems(vdoc, true)
...
Call vdoc.Save(True, False)
End If
Call uid.Close(True)

End Sub[/codebox]

подскажите пожалуйста как лучше изменить код? :)
 
H

hosm

Если "по кнопке открывается форма на редактирвоание", то тогда вместо
Код:
Call ws.EditDocument(False, doc)
надо вообще-то
Код:
Call ws.EditDocument(True, doc)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!