УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

Доступ к функциям печати и экспорта


Автор Повідомлення
Повідомлення створено: 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
Теперь можно:
JAVASCRIPT
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).




0911