Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Смена пользователя  (Прочитано 7547 раз)

MaxHari

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Смена пользователя
« : 09 Декабря 2019, 00:11:51 »
Здравствуйте!
Необходимо сделать проверку пользователя при нажатии кнопки, по которой запускается окно с таблицей. В одном случае - таблица редактируемая, в другом - нет.

В начале скрипта я выполняю ChangeUser(GetClientName), далее идёт сам скрипт, по которому запускается окно с двумя невидимыми таблицами, которые в зависимости от пользователя преобретают видимость. Проблема в том, что выполнение скрипта не останавливается на операторе ChangeUser, до выбора пользователя. То есть, если даже пользователь поменялся, то при первом запуске, проверка даст старого пользователя, поскольку ChangeUser ещё не закончил работу.

Подскажите, пожалуйста, возможное решение.

*************

На данный момент пришло только следующее решение:
При нажатии кнопки запускается окно с невидимыми таблицами. Таблицы прикрыты "шторкой" с кнопкой. Вызывается команда ChangeUser. После смены пользователя оператору необходимо нажать на кнопку, и уже после этого срабатывает скрипт, где убирается шторка с кнопкой и появляется нужная таблица (с возможностью редактирования ячеек или без).

Не сильно удобно, но работает  ;)
« Изменён: 09 Декабря 2019, 11:28:05 от MaxHari »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Смена пользователя
« Ответ #1 : 09 Декабря 2019, 14:56:53 »
Необходимо сделать проверку пользователя при нажатии кнопки, по которой запускается окно с таблицей. В одном случае - таблица редактируемая, в другом - нет.
Эту задачу нужно решать используя стандартную систему пользователей, без скриптов и без создания дублирующихся окон. Вот инструкция: открыть окно с таблицей в редакторе. Выделить таблицу, найти в инспекторе объектов свойство "Права доступа" и нажать кнопку "..." в правой части этого свойства. Откроется панель в которой можно задать для каждого пользователя отдельный уровень доступа к компоненту Таблица (см. скрин во вложении). Задача решена.

MaxHari

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Смена пользователя
« Ответ #2 : 10 Декабря 2019, 22:25:35 »
Разобрался, спасибо за ответы  :)
Как-то подзабыл про скрипт по событию "Авторизация пользователя", а про "Права доступа" в таком варианте и не догадывался.

Действительно очень удобно, всё приходит с опытом.

MaxHari

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Смена пользователя
« Ответ #3 : 18 Января 2020, 07:07:36 »
Проблемка с пользователями всё-таки возникла) Попробую описать подробнее.

Есть окно с таблицей, которое открывается по кнопке. По нажатии на кнопку необходимо открыть окно авторизации для повторной проверки пользователя. Если авторизуется администратор, он имеет право редактировать таблицу в окне, если оператор - таблица только для чтения. Проблема возникает, когда залогинен администратор, он отходит от ПК, и в этот момент подходит оператор, нажимает кнопку - появляется окно авторизации, и оператор нажимает Esc. То есть смены пользоваетеля не происходит, и оператор имеет полный доступ к таблице. Помогите, пожалуйста, разобраться с задачей.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Смена пользователя
« Ответ #4 : 19 Января 2020, 11:34:43 »
Цитировать
Проблема возникает, когда залогинен администратор, он отходит от ПК, и в этот момент подходит оператор
Если права доступа важны, то администратор перед уходом должен выйти из своей учетной записи, иначе любой человек имеющий доступ к ПК сможет проделать действия от его имени. Если он этого не сделал, то уже возникает практически нерешаемая проблема безопасности и теряется смысл в системе пользователей. Обычно все пользователи авторизуются отдельно и выходят из учетной записи когда покидают рабочее место. Тогда для ограничения доступа можно использовать стандартную систему прав пользователей и Вы могли бы просто разрешить доступ к окну (или к конкретному объекту, например Таблице) для Администратора и запретить для Оператора, не используя скриптов.

Цитировать
и в этот момент подходит оператор, нажимает кнопку - появляется окно авторизации, и оператор нажимает Esc.
Вы сделали собственную систему авторизации для окна? Выполняете скрипт с процедурой ChangeUser при открытии окна? Если да, то через скрипты будет проблематично сделать отдельную надежную авторизацию для окна, т.к. скада не сможет узнать что за компьютер сел другой пользователь.

MaxHari

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Смена пользователя
« Ответ #5 : 19 Января 2020, 18:39:04 »
Цитировать
Вы сделали собственную систему авторизации для окна? Выполняете скрипт с процедурой ChangeUser при открытии окна? Если да, то через скрипты будет проблематично сделать отдельную надежную авторизацию для окна, т.к. скада не сможет узнать что за компьютер сел другой пользователь.

Собственную систему авторизации не делали, стараемся действовать в рамках возможностей скады. При открытии окна используется стандартный ChangeUser. Есть ли возможность отключить кнопку 'Esc' при вызове ChangeUser (либо в проекте в целом)? Тогда бы вопрос сам собой решился.

Евгений Н.

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Смена пользователя
« Ответ #6 : 19 Января 2020, 18:56:35 »
Options.exe там есть вроде отключение клавиш
« Изменён: 20 Января 2020, 11:34:13 от Simple_Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Смена пользователя
« Ответ #7 : 20 Января 2020, 16:44:48 »
Цитировать
Есть ли возможность отключить кнопку 'Esc' при вызове ChangeUser (либо в проекте в целом)? Тогда бы вопрос сам собой решился.
ChangeUser всегда с возможностью закрытия. Отображение окна авторизации без возможности закрытия выполняется через Logout. Но он для вашей задачи не подойдёт, т.к. выполняет полный выход (с закрытием окон).

MaxHari

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Смена пользователя
« Ответ #8 : 21 Января 2020, 09:49:02 »
Цитировать
ChangeUser всегда с возможностью закрытия. Отображение окна авторизации без возможности закрытия выполняется через Logout. Но он для вашей задачи не подойдёт, т.к. выполняет полный выход (с закрытием окон).
Попробовал Logout на demo 2.3.6.4 - появляется "стартовый" тёмный экран авторизации, без возможности отмены клавишей 'Esc'. При авторизации проект продолжает работать с того же места. В целом - подходит, если нет каких-либо существенных отличий от ChangeUser, кроме затемнения экрана.

Задачу получилось наконец задачу через вторую, read-only таблицу и управление её видимостью. Работает как на ChangeUser, так и на Logout.