From 31919ae12a58024323f473074627271812483dd7 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Tue, 9 Apr 2024 10:56:25 +0200 Subject: [PATCH] MySQL schema: add roles tables --- schema/mysql.schema.sql | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/schema/mysql.schema.sql b/schema/mysql.schema.sql index 1eb71a8a96..a8c15c235e 100644 --- a/schema/mysql.schema.sql +++ b/schema/mysql.schema.sql @@ -31,6 +31,58 @@ CREATE TABLE `icingaweb_user`( PRIMARY KEY (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE icingaweb_role ( + id int unsigned NOT NULL AUTO_INCREMENT, + parent_id int unsigned DEFAULT NULL, + name varchar(254) NOT NULL, + unrestricted enum('n', 'y') NOT NULL DEFAULT 'n', + ctime bigint unsigned NOT NULL, + mtime bigint unsigned DEFAULT NULL, + + PRIMARY KEY (id), + CONSTRAINT fk_icingaweb_role_parent_id FOREIGN KEY (parent_id) + REFERENCES icingaweb_role (id) ON DELETE SET NULL, + CONSTRAINT idx_icingaweb_role_name UNIQUE (name) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +CREATE TABLE icingaweb_role_user ( + role_id int unsigned NOT NULL, + user_name varchar(254) COLLATE utf8mb4_unicode_ci NOT NULL, + + PRIMARY KEY (user_name, role_id), + CONSTRAINT fk_icingaweb_role_user_role_id FOREIGN KEY (role_id) + REFERENCES icingaweb_role (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +CREATE TABLE icingaweb_role_group ( + role_id int unsigned NOT NULL, + group_name varchar(254) COLLATE utf8mb4_unicode_ci NOT NULL, + + PRIMARY KEY (group_name, role_id), + CONSTRAINT fk_icingaweb_role_group_role_id FOREIGN KEY (role_id) + REFERENCES icingaweb_role (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +CREATE TABLE icingaweb_role_permission ( + role_id int unsigned NOT NULL, + permission varchar(254) NOT NULL, + allowed enum('n', 'y') NOT NULL DEFAULT 'n', + + PRIMARY KEY (role_id, permission), + CONSTRAINT fk_icingaweb_role_permission_role_id FOREIGN KEY (role_id) + REFERENCES icingaweb_role (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +CREATE TABLE icingaweb_role_restriction ( + role_id int unsigned NOT NULL, + restriction varchar(254) NOT NULL, + filter text NOT NULL, + + PRIMARY KEY (role_id, restriction), + CONSTRAINT fk_icingaweb_role_restriction_role_id FOREIGN KEY (role_id) + REFERENCES icingaweb_role (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + CREATE TABLE `icingaweb_user_preference`( `username` varchar(254) COLLATE utf8mb4_unicode_ci NOT NULL, `section` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,