Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 26

Доступ только пользователю

14.02.2019, 20:17. Показов 2109. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Имеется база регистрация заявок.
Нужно было закрыть доступ на редактирование после выставления статуса.
Реализовал в Queryopen
Visual Basic
1
if Not Source.Document.GetItemValue("status")(0) ="" Then
На данный момент есть потребность у пользователей все таки видеть содержание формы, но нужно сделать так, что бы они не могли редактировать содержимое и тем более сохранить.

Добавлено через 3 часа 47 минут
Перекинул код в Querymodechange
Все работает как надо.
Человек может редактировать до выставления статуса, но появилась другая задача.

Регистрируют заявки несколько пользователей и они могут редактировать заявки друг друга, а не должны.
Как сравнивается авторство документа?

т.е. просто If user = автор Then редактирование разрешено.

Добавлено через 33 минуты
Пробовал
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Mode=source.EditMode
        
        If Not source.IsNewDoc Then
            tmp=Evaluate(|@Contains(ShAuthor; @Name([CN];@UserName))|)
            If tmp(0)=0 Then
                
                source.EditMode=False
            Else
                source.EditMode=Mode
            End If
            
        End If
Но не заработало.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2019, 20:17
Ответы с готовыми решениями:

Права пользователю на доступ только к папке /root/de
Здравствуйте, у меня есть VDS. Я добавил пользователя "de" и мне нужно, чтобы он имел доступ только к папке /root/de. Как это...

Необходимо пользователю через RDP предоставить доступ только к 1С
Север win 2012r2 x64 на борту домен и АД. RDP настроен. В ад есть группу "бухгалтерия" и пользователь test, хочу сделать так:...

Дать доступ пользователю из вне только к одной программе?
Возник такой вопрос. Есть сеть из 3х компьютеров объеденные через Workgroup с выходом в Интернет. На одном из этих компьютером стоит...

3
529 / 91 / 44
Регистрация: 02.02.2013
Сообщений: 400
15.02.2019, 07:20
Здравствуйте

Для вопросов доступа к документу можно использовать уже встроенные средства Лотус, вместо того чтобы писать свою логику.

В lotus-е уже есть встроенная возможность разграничения доступа разным пользователям к одному и тому же документу.
Например, если вы с документе сделаете специальное служебное поле со списком Читателей - и будете сохранять в это поле имена читателей которые должны только просматривать документ - то они не смогут переключить документ в редактирование и вам ничего программировать практически не нужно для этого - за исключением того что просто создать поле с типом Readers и организовать добавление в это поле нужные имена пользователей. Само поле может называться как угодно.

Тоже самое качается пользователей на изменение нужно создать дополнительно поле с типом Authors
Есть так же поля которые задают видимость документа вообще в базе данных - это для особо сложныйх случаев.
В большинстве случаев хватает полей Для Редаторов и для читалаей (см срикриншот)

Например пользователь на уровне БД может иметь доступ как редактор, но при этом будет иметь возможность реально изменить только те документы в которых его имя содержится в поле со списком редакторов/авторов.

про поля более подробон тут можно найти https://www.ibm.com/developerw... index.html
Миниатюры
Доступ только пользователю  
1
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 26
15.02.2019, 08:12  [ТС]
Ну это нужно каждый раз забивать, а у меня же одни и те же люди и правила.

Сегодня ночью решил все же вопрос с доступом автора.
Создал поле uname_1 в которое при сохранении записывалось имя автора.
Затем в Queryopen написал условие.
Visual Basic
1
If Not Source.Document.ParentDatabase.Parent.UserName = Source.Document.GetItemValue("uname_1")(0)  Then
И пользователи теперь могут открыть только созданные ими доки и если в них не проставлен статус то и редактировать.

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

Видел вариант с обработкой ролей.
Visual Basic
1
2
3
4
5
6
7
If not source.IsNewDoc then
tmp=evaluate(|@IsMember("[Buh]";@UserRoles)|)
if not tmp(0)=0 then
Это значит, чтопользователь бухгалтер
source.editMode=Mode
end if
end if
Теперь разбираюсь с ним.

Добавлено через 28 минут
Хех.
Реализовал )))

В Queryopen для открытия документа
Visual Basic
1
2
3
4
tmp=Evaluate(|@IsMember("[BuH]";@UserRoles)|)
        If Not tmp(0)=0 Then
            ExistSign = False
        End If
и в Querymodechange
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
If Source.Document.GetItemValue("status")(0) ="" Then
Выясняем, что статус не проставлен
            If Source.Document.ParentDatabase.Parent.UserName = Source.Document.GetItemValue("uname_1")(0)  Then
Выясняем, что user является автором           
                ExistSign = False
            End If
            tmp=Evaluate(|@IsMember("[BuH]";@UserRoles)|)
            If Not tmp(0)=0 Then
Выясняем, что это бухгалтер.
                ExistSign = False
            End If
        End If
0
529 / 91 / 44
Регистрация: 02.02.2013
Сообщений: 400
15.02.2019, 18:39
Ваше решение конечно тоже имеет быть место - но, зная что в лотусе это все уже все есть - ваше решение похоже на изобретение велосипеда, к тому же оно защищает только как говорится "от дурака". Пользователь напишет агент всего из одной строчки в которой например удаляет поле с любым нужным ему названием например:

Visual Basic
1
 Field Status:=@Deletefield;
Выделит все документы в базе и запустит агент и защита через события QueryOpen и Querymodechange не сработает. Поле будет спокойно удалено. Документы и открывать не нужно.

Тот вариант, который я предложил вначале - он защищает даже от таких действий "от дурака" т.к. поля редакторов и читателей работают при любых действиях с документом и через интерфейс и через агентов и в backgraunde.

В принципе, если для вас это первый опыт, реализации подобных вещей - то сойдет тоже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2019, 18:39
Помогаю со студенческими работами здесь

Доступ к mySQL возможен только через Shell доступ. Что это значит ?
навеяло отсюда https://www.cyberforum.ru/php-beginners/thread462521.html не могу понять скрипт есть который по ssh по рса ключу...

Доступ к mySQL возможен только через Shell доступ. Что это значит ?
Доступ к mySQL возможен только через Shell доступ. Что это значит ? На меня завели БД mySQL и выслали следующую информацию: > Имя...

Как сделать на Squid запретить доступ только закачка avi,flv доступ просмотр фильм и музыка
У меня прокси сервер на Основе Squid Transparent os Suse у меня вот токое проблема я раньше такой правило пользовалься он работает но...

Доступ к пользователю
что за пользователь homeusers?

Данному пользователю запрещен доступ
access denied for user ' '@'localhost' to database 'mysql' - я вижу это сообщение об ошибке №1044 (42000) когда пытаюсь ввести команду -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru