Повідомлення створено: 04. 08. 2011 [16:06]
|
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
|
Есть ли возможность разграничить (или хотя бы заблокировать) доступ к функциям печати и экспорта исходя из уже существующей unix подобной модели разграничения прав для пользователей и групп OpenSCADA? (или хотя бы глобально запретить эти функции).
В доке на нашел.
|
Повідомлення створено: 04. 08. 2011 [18:15]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"aleax" wrote:
Есть ли возможность разграничить (или хотя бы заблокировать) доступ к функциям печати и экспорта исходя из уже существующей unix подобной модели разграничения прав для пользователей и групп OpenSCADA? (или хотя бы глобально запретить эти функции).
Печать и экспорт доступны всегда.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 16. 08. 2011 [14:49]
|
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
|
Теперь можно:
Index: src/tsecurity.cpp
===================================================================
--- src/tsecurity.cpp (revision 1514)
+++ src/tsecurity.cpp (working copy)
@@ -75,6 +75,18 @@
grpAt("users").at().setSysItem(true);
grpAt("users").at().userAdd("user");
grpAt("users").at().userAdd("root");
+ //>> Print users group
+ grpAdd("print");
+ grpAt("print").at().setLName(_("Print access group."));
+ grpAt("print").at().setSysItem(true);
+ grpAt("print").at().userAdd("user");
+ grpAt("print").at().userAdd("root");
+ //>> Export users group
+ grpAdd("export");
+ grpAt("export").at().setLName(_("Export access group."));
+ grpAt("export").at().setSysItem(true);
+ grpAt("export").at().userAdd("user");
+ grpAt("export").at().userAdd("root");
}
TSubSYS::postEnable(flag);
Index: src/po/ru.po
===================================================================
--- src/po/ru.po (revision 1514)
+++ src/po/ru.po (working copy)
@@ -1345,6 +1345,12 @@
msgid "Users group."
msgstr "Группа пользователей."
+msgid "Print access group"
+msgstr "Группа пользователей с доступом к печати"
+
+msgid "Export access group"
+msgstr "Группа пользователей с доступом к экспорту"
+
msgid "Removal of system user is inadmissible."
msgstr "Удаление системного пользователя недопустимо."
Index: src/po/de.po
===================================================================
--- src/po/de.po (revision 1514)
+++ src/po/de.po (working copy)
@@ -1361,6 +1361,12 @@
msgid "Users group."
msgstr "Gruppe von Benutzern."
+msgid "Print access group"
+msgstr "Eine Gruppe von Benutzern den Zugriff auf die Drucken."
+
+msgid "Export access group"
+msgstr "Eine Gruppe von Benutzern den Zugriff auf die Exporte"
+
msgid "Removal of system user is inadmissible."
msgstr "Löschen des Systembenutzers ist nicht zulässig."
Index: src/po/uk.po
===================================================================
--- src/po/uk.po (revision 1514)
+++ src/po/uk.po (working copy)
@@ -1342,6 +1342,12 @@
msgid "Users group."
msgstr "Група користувачів"
+msgid "Print access group"
+msgstr "Група користувачів з доступом до друку"
+
+msgid "Export access group"
+msgstr "Група користувачів з доступом до експорту"
+
msgid "Removal of system user is inadmissible."
msgstr "Видалення системного користувача неможливе."
Index: src/moduls/ui/Vision/vis_run.cpp
===================================================================
--- src/moduls/ui/Vision/vis_run.cpp (revision 1514)
+++ src/moduls/ui/Vision/vis_run.cpp (working copy)
@@ -76,7 +76,7 @@
//>> Generic actions
//>>> Print
if(!ico_t.load(TUIS::icoPath("print").c_str())) ico_t.load(":/images/print.png");
- QMenu *menuPrint = new QMenu(_("&Print"), this);
+ menuPrint = new QMenu(_("&Print"), this);
menuPrint->setIcon(QPixmap::fromImage(ico_t));
menuPrint->menuAction()->setShortcut(QKeySequence::Print);
menuPrint->menuAction()->setToolTip(_("Print the master page"));
@@ -103,7 +103,7 @@
menuPrint->addAction(actPrintDoc);
//>>> Export
if(!ico_t.load(TUIS::icoPath("export").c_str())) ico_t.load(":/images/export.png");
- QMenu *menuExport = new QMenu(_("&Export"), this);
+ menuExport = new QMenu(_("&Export"), this);
menuExport->setIcon(QPixmap::fromImage(ico_t));
menuExport->menuAction()->setToolTip(_("Export the master page"));
menuExport->menuAction()->setWhatsThis(_("The button for exporting of the master page by default"));
@@ -286,6 +286,8 @@
alrmPlay = new SndPlay(this);
menuBar()->setVisible(SYS->security().at().access(user(),SEC_WR,"root","root",RWRWR_));
+ menuPrint->setDisabled( !SYS->security().at().access(user(),SEC_WR,"root","print",RWRWR_) );
+ menuExport->setDisabled( !SYS->security().at().access(user(),SEC_WR,"root","export",RWRWR_) );
resize(600, 400);
@@ -918,6 +920,8 @@
pgCacheClear();
bool oldMenuVis = menuBar()->isVisible();
menuBar()->setVisible(SYS->security().at().access(user(),SEC_WR,"root","root",RWRWR_));
+ menuPrint->setDisabled( !SYS->security().at().access(user(),SEC_WR,"root","print",RWRWR_) );
+ menuExport->setDisabled( !SYS->security().at().access(user(),SEC_WR,"root","export",RWRWR_) );
QApplication::processEvents();
if( master_pg )
{
Index: src/moduls/ui/Vision/vis_run.h
===================================================================
--- src/moduls/ui/Vision/vis_run.h (revision 1514)
+++ src/moduls/ui/Vision/vis_run.h (working copy)
@@ -147,6 +147,10 @@
*mn_view, //Menu "View"
*mn_help; //Menu "Help"
+ //> Print and Export menus
+ QMenu *menuPrint, //Menu "Print"
+ *menuExport; //Menu "Export"
+
//> Tool bars
QToolBar *toolBarStatus; //Status toolbar
Добавил проверку на принадлежность пользователя группам "print" и "export", ну или не является ли пользователь root’ом.
Пользователь "user" по-умолчанию входит в эти группы.
Примите в апстрим?
|
Повідомлення створено: 16. 08. 2011 [20:49]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
Считаю нецелесообразным резервировать отдельную группу на одну операцию. Да и смысла блокировать печать и экспорт не вижу.
В конце концов достаточно привязать доступ на печать и экспорт к доступу на управление по проекту. Хотя не совсем, проект без управления не совсем юзабилен. Подумаю ещё.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 18. 08. 2011 [10:00]
|
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
|
"roman" wrote:
Считаю нецелесообразным резервировать отдельную группу на одну операцию. Да и смысла блокировать печать и экспорт не вижу.
Согласен, создавать две новые группы для управления доступом к по-сути одинаковым функциям, чересчур жирно. Просто не придумал как бы назвать группу, что б и печать и экспорт, и одним словом :)
Смысл возможности блокирования частично в том, что если в ТЗ нету таких возможностей, то и хотелось бы иметь штатный механизм закрытия доступа к ним, который вписывался бы в уже существующию модель разграничения прав.
"roman" wrote:
В конце концов достаточно привязать доступ на печать и экспорт к доступу на управление по проекту. Хотя не совсем, проект без управления не совсем юзабилен. Подумаю ещё.
Вот потому и выходит что наиболее "прозрачным" способом добавления данной возможности в OpenSCADA (ИМХО), является использование механизма групп, что б иметь возможность гибко управлять доступом к данным функциям: 1) пользователь с правами на управления проектом и без доступа к печати и экспорту; 2) пользователь с правами доступа и к управления проектом и к печати и экспорту; 3) пользователь без доступа к управления проектом, но с доступом к печати и экспорту (хотя зачем он такой нужен, сразу и не придумаешь :D).
|