big restructure
This commit is contained in:
@@ -6,6 +6,7 @@ CREATE TABLE IF NOT EXISTS `users` (
|
||||
`uuid` CHAR(36) NOT NULL,
|
||||
`first_name` VARCHAR(100) NOT NULL,
|
||||
`last_name` VARCHAR(100) NOT NULL,
|
||||
`display_name` VARCHAR(210) NOT NULL,
|
||||
`email` VARCHAR(255) NOT NULL,
|
||||
`profile_description` TEXT NULL,
|
||||
`job_title` VARCHAR(160) NULL,
|
||||
@@ -19,6 +20,7 @@ CREATE TABLE IF NOT EXISTS `users` (
|
||||
`region` VARCHAR(100) NULL,
|
||||
`hire_date` DATE NULL,
|
||||
`email_verified_at` DATETIME NULL DEFAULT NULL,
|
||||
`last_login_at` DATETIME NULL DEFAULT NULL,
|
||||
`password` VARCHAR(255) NOT NULL,
|
||||
`locale` VARCHAR(10) DEFAULT NULL,
|
||||
`totp_secret` VARCHAR(255) DEFAULT NULL,
|
||||
@@ -88,12 +90,16 @@ CREATE TABLE IF NOT EXISTS `roles` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uuid` CHAR(36) NOT NULL,
|
||||
`description` VARCHAR(255) NOT NULL,
|
||||
`code` VARCHAR(50) DEFAULT NULL,
|
||||
`active` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`created_by` INT UNSIGNED DEFAULT NULL,
|
||||
`modified_by` INT UNSIGNED DEFAULT NULL,
|
||||
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`modified` DATETIME NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uniq_roles_uuid` (`uuid`),
|
||||
UNIQUE KEY `uniq_roles_code` (`code`),
|
||||
KEY `idx_roles_active` (`active`),
|
||||
KEY `idx_roles_created_by` (`created_by`),
|
||||
KEY `idx_roles_modified_by` (`modified_by`),
|
||||
CONSTRAINT `fk_roles_created_by` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
|
||||
@@ -104,21 +110,29 @@ CREATE TABLE IF NOT EXISTS `permissions` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`key` VARCHAR(191) NOT NULL,
|
||||
`description` VARCHAR(255) DEFAULT NULL,
|
||||
`active` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`is_system` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uniq_permissions_key` (`key`)
|
||||
UNIQUE KEY `uniq_permissions_key` (`key`),
|
||||
KEY `idx_permissions_active` (`active`),
|
||||
KEY `idx_permissions_system` (`is_system`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `departments` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uuid` CHAR(36) NOT NULL,
|
||||
`description` VARCHAR(255) NOT NULL,
|
||||
`code` VARCHAR(50) DEFAULT NULL,
|
||||
`cost_center` VARCHAR(50) DEFAULT NULL,
|
||||
`active` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`created_by` INT UNSIGNED DEFAULT NULL,
|
||||
`modified_by` INT UNSIGNED DEFAULT NULL,
|
||||
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`modified` DATETIME NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uniq_departments_uuid` (`uuid`),
|
||||
KEY `idx_departments_active` (`active`),
|
||||
KEY `idx_departments_created_by` (`created_by`),
|
||||
KEY `idx_departments_modified_by` (`modified_by`),
|
||||
CONSTRAINT `fk_departments_created_by` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
|
||||
@@ -274,6 +288,7 @@ CREATE TABLE IF NOT EXISTS `user_remember_tokens` (
|
||||
`selector` CHAR(24) NOT NULL,
|
||||
`token_hash` CHAR(64) NOT NULL,
|
||||
`expires_at` DATETIME NOT NULL,
|
||||
`expired_by_admin_at` DATETIME NULL DEFAULT NULL COMMENT 'Expired by admin action',
|
||||
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`last_used` DATETIME NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
@@ -287,18 +302,19 @@ INSERT INTO `tenants` (`uuid`, `description`, `created`)
|
||||
SELECT UUID(), 'Cronus', NOW()
|
||||
WHERE NOT EXISTS (SELECT 1 FROM tenants WHERE description = 'Cronus');
|
||||
|
||||
INSERT INTO `departments` (`uuid`, `description`, `created`)
|
||||
SELECT UUID(), 'IT', NOW()
|
||||
INSERT INTO `departments` (`uuid`, `description`, `code`, `active`, `created`)
|
||||
SELECT UUID(), 'IT', 'IT', 1, NOW()
|
||||
WHERE NOT EXISTS (SELECT 1 FROM departments WHERE description = 'IT');
|
||||
|
||||
INSERT INTO `roles` (`uuid`, `description`, `created`)
|
||||
SELECT UUID(), 'Admin', NOW()
|
||||
INSERT INTO `roles` (`uuid`, `description`, `code`, `active`, `created`)
|
||||
SELECT UUID(), 'Admin', 'ADMIN', 1, NOW()
|
||||
WHERE NOT EXISTS (SELECT 1 FROM roles WHERE description = 'Admin');
|
||||
|
||||
INSERT INTO `users` (
|
||||
`uuid`,
|
||||
`first_name`,
|
||||
`last_name`,
|
||||
`display_name`,
|
||||
`email`,
|
||||
`password`,
|
||||
`locale`,
|
||||
@@ -315,6 +331,7 @@ SELECT
|
||||
UUID(),
|
||||
'Detlef',
|
||||
'Demo',
|
||||
'Detlef Demo',
|
||||
'demo@user.com',
|
||||
'$2y$12$KVCQvuy4Pl1aySBuzSpc7ehpZhAzYZkndDI9OaMi05E2P/Mhob5HO',
|
||||
'de',
|
||||
@@ -375,42 +392,47 @@ WHERE NOT EXISTS (
|
||||
SELECT 1 FROM page_contents pc WHERE pc.page_id = p.id AND pc.locale = 'de'
|
||||
);
|
||||
|
||||
INSERT INTO `permissions` (`key`, `description`)
|
||||
INSERT INTO `permissions` (`key`, `description`, `active`, `is_system`)
|
||||
VALUES
|
||||
('users.view', 'Can view users'),
|
||||
('users.create', 'Can create users'),
|
||||
('users.update', 'Can update users'),
|
||||
('users.delete', 'Can delete users'),
|
||||
('users.self_update', 'Can update own user'),
|
||||
('users.update_assignments', 'Can update user assignments'),
|
||||
('address_book.view', 'Can view address book'),
|
||||
('tenants.view', 'Can view tenants'),
|
||||
('tenants.create', 'Can create tenants'),
|
||||
('tenants.update', 'Can update tenants'),
|
||||
('tenants.delete', 'Can delete tenants'),
|
||||
('departments.view', 'Can view departments'),
|
||||
('departments.create', 'Can create departments'),
|
||||
('departments.update', 'Can update departments'),
|
||||
('departments.delete', 'Can delete departments'),
|
||||
('roles.view', 'Can view roles'),
|
||||
('roles.create', 'Can create roles'),
|
||||
('roles.update', 'Can update roles'),
|
||||
('roles.delete', 'Can delete roles'),
|
||||
('permissions.view', 'Can view permissions'),
|
||||
('permissions.create', 'Can create permissions'),
|
||||
('permissions.update', 'Can update permissions'),
|
||||
('permissions.delete', 'Can delete permissions'),
|
||||
('settings.view', 'Can view settings'),
|
||||
('settings.update', 'Can update settings'),
|
||||
('mail_log.view', 'Can view mail logs'),
|
||||
('stats.view', 'Can view statistics')
|
||||
ON DUPLICATE KEY UPDATE `description` = VALUES(`description`);
|
||||
('users.view', 'Can view users', 1, 1),
|
||||
('users.view_meta', 'Can view user status and meta', 1, 1),
|
||||
('users.view_audit', 'Can view user audit log', 1, 1),
|
||||
('users.create', 'Can create users', 1, 1),
|
||||
('users.update', 'Can update users', 1, 1),
|
||||
('users.delete', 'Can delete users', 1, 1),
|
||||
('users.self_update', 'Can update own user', 1, 1),
|
||||
('users.update_assignments', 'Can update user assignments', 1, 1),
|
||||
('address_book.view', 'Can view address book', 1, 1),
|
||||
('tenants.view', 'Can view tenants', 1, 1),
|
||||
('tenants.create', 'Can create tenants', 1, 1),
|
||||
('tenants.update', 'Can update tenants', 1, 1),
|
||||
('tenants.delete', 'Can delete tenants', 1, 1),
|
||||
('departments.view', 'Can view departments', 1, 1),
|
||||
('departments.create', 'Can create departments', 1, 1),
|
||||
('departments.update', 'Can update departments', 1, 1),
|
||||
('departments.delete', 'Can delete departments', 1, 1),
|
||||
('roles.view', 'Can view roles', 1, 1),
|
||||
('roles.create', 'Can create roles', 1, 1),
|
||||
('roles.update', 'Can update roles', 1, 1),
|
||||
('roles.delete', 'Can delete roles', 1, 1),
|
||||
('permissions.view', 'Can view permissions', 1, 1),
|
||||
('permissions.create', 'Can create permissions', 1, 1),
|
||||
('permissions.update', 'Can update permissions', 1, 1),
|
||||
('permissions.delete', 'Can delete permissions', 1, 1),
|
||||
('settings.view', 'Can view settings', 1, 1),
|
||||
('settings.update', 'Can update settings', 1, 1),
|
||||
('mail_log.view', 'Can view mail logs', 1, 1),
|
||||
('stats.view', 'Can view statistics', 1, 1)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`description` = VALUES(`description`),
|
||||
`active` = VALUES(`active`),
|
||||
`is_system` = VALUES(`is_system`);
|
||||
|
||||
INSERT INTO `role_permissions` (`role_id`, `permission_id`, `created`)
|
||||
SELECT r.id, p.id, NOW()
|
||||
FROM roles r
|
||||
JOIN permissions p ON p.`key` IN (
|
||||
'users.view', 'users.create', 'users.update', 'users.delete',
|
||||
'users.view', 'users.view_meta', 'users.view_audit', 'users.create', 'users.update', 'users.delete',
|
||||
'users.self_update', 'users.update_assignments',
|
||||
'address_book.view',
|
||||
'tenants.view', 'tenants.create', 'tenants.update', 'tenants.delete',
|
||||
|
||||
Reference in New Issue
Block a user