From f7bd670d1bac44293a16bdd9f19ef024da835d30 Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Fri, 26 Jun 2015 16:36:18 +0200 Subject: [PATCH] Add imports support to User --- application/forms/IcingaUserForm.php | 5 +++++ library/Director/Objects/IcingaUser.php | 2 ++ schema/mysql-changes/upgrade_13.sql | 17 +++++++++++++++++ schema/mysql.sql | 18 ++++++++++++++++++ schema/pgsql-changes/upgrade-4.sql | 20 ++++++++++++++++++++ schema/pgsql.sql | 22 ++++++++++++++++++++++ 6 files changed, 84 insertions(+) create mode 100644 schema/mysql-changes/upgrade_13.sql create mode 100644 schema/pgsql-changes/upgrade-4.sql diff --git a/application/forms/IcingaUserForm.php b/application/forms/IcingaUserForm.php index fcd18231..b94bcf1a 100644 --- a/application/forms/IcingaUserForm.php +++ b/application/forms/IcingaUserForm.php @@ -59,5 +59,10 @@ class IcingaUserForm extends DirectorObjectForm 'label' => $this->translate('Usergroups'), 'description' => $this->translate('One or more comma separated usergroup names') )); + + $this->addElement('text', 'imports', array( + 'label' => $this->translate('Imports'), + 'description' => $this->translate('The inherited user template names') + )); } } diff --git a/library/Director/Objects/IcingaUser.php b/library/Director/Objects/IcingaUser.php index 86397111..ee78f1e4 100644 --- a/library/Director/Objects/IcingaUser.php +++ b/library/Director/Objects/IcingaUser.php @@ -22,6 +22,8 @@ class IcingaUser extends IcingaObject protected $supportsCustomVars = true; + protected $supportsImports = true; + protected function renderEnable_notifications() { return $this->renderBooleanProperty('enable_notifications'); diff --git a/schema/mysql-changes/upgrade_13.sql b/schema/mysql-changes/upgrade_13.sql new file mode 100644 index 00000000..a6d01384 --- /dev/null +++ b/schema/mysql-changes/upgrade_13.sql @@ -0,0 +1,17 @@ +CREATE TABLE icinga_user_inheritance ( + user_id INT(10) UNSIGNED NOT NULL, + parent_user_id INT(10) UNSIGNED NOT NULL, + weight MEDIUMINT UNSIGNED DEFAULT NULL, + PRIMARY KEY (user_id, parent_user_id), + UNIQUE KEY unique_order (user_id, weight), + CONSTRAINT icinga_user_inheritance_user + FOREIGN KEY host (user_id) + REFERENCES icinga_user (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_user_inheritance_parent_user + FOREIGN KEY host (parent_user_id) + REFERENCES icinga_user (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/schema/mysql.sql b/schema/mysql.sql index 102bf668..34bb930f 100644 --- a/schema/mysql.sql +++ b/schema/mysql.sql @@ -519,6 +519,24 @@ CREATE TABLE icinga_user ( ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE icinga_user_inheritance ( + user_id INT(10) UNSIGNED NOT NULL, + parent_user_id INT(10) UNSIGNED NOT NULL, + weight MEDIUMINT UNSIGNED DEFAULT NULL, + PRIMARY KEY (user_id, parent_user_id), + UNIQUE KEY unique_order (user_id, weight), + CONSTRAINT icinga_user_inheritance_user + FOREIGN KEY host (user_id) + REFERENCES icinga_user (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_user_inheritance_parent_user + FOREIGN KEY host (parent_user_id) + REFERENCES icinga_user (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + CREATE TABLE icinga_user_filter_state ( user_id INT(10) UNSIGNED NOT NULL, state_name ENUM( diff --git a/schema/pgsql-changes/upgrade-4.sql b/schema/pgsql-changes/upgrade-4.sql new file mode 100644 index 00000000..7e81f1a2 --- /dev/null +++ b/schema/pgsql-changes/upgrade-4.sql @@ -0,0 +1,20 @@ +CREATE TABLE icinga_user_inheritance ( + user_id integer NOT NULL, + parent_user_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (user_id, parent_user_id), + CONSTRAINT icinga_user_inheritance_user + FOREIGN KEY (user_id) + REFERENCES icinga_user (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_user_inheritance_parent_user + FOREIGN KEY (parent_user_id) + REFERENCES icinga_user (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX user_inheritance_unique_order ON icinga_user_inheritance (user_id, weight); +CREATE INDEX user_inheritance_user ON icinga_user_inheritance (user_id); +CREATE INDEX user_inheritance_user_parent ON icinga_user_inheritance (parent_user_id); \ No newline at end of file diff --git a/schema/pgsql.sql b/schema/pgsql.sql index a8f8cda4..a9845b19 100644 --- a/schema/pgsql.sql +++ b/schema/pgsql.sql @@ -638,6 +638,28 @@ CREATE UNIQUE INDEX user_object_name ON icinga_user (object_name, zone_id); CREATE INDEX user_zone ON icinga_user (zone_id); +CREATE TABLE icinga_user_inheritance ( + user_id integer NOT NULL, + parent_user_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (user_id, parent_user_id), + CONSTRAINT icinga_user_inheritance_user + FOREIGN KEY (user_id) + REFERENCES icinga_user (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_user_inheritance_parent_user + FOREIGN KEY (parent_user_id) + REFERENCES icinga_user (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX user_inheritance_unique_order ON icinga_user_inheritance (user_id, weight); +CREATE INDEX user_inheritance_user ON icinga_user_inheritance (user_id); +CREATE INDEX user_inheritance_user_parent ON icinga_user_inheritance (parent_user_id); + + CREATE TABLE icinga_user_filter_state ( user_id integer NOT NULL, state_name enum_state_name NOT NULL,