58 lines
2.3 KiB
SQL
58 lines
2.3 KiB
SQL
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`username` VARCHAR(255) NOT NULL UNIQUE,
|
|
`password` VARCHAR(255) NOT NULL,
|
|
`role_id` INT NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `roles` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL UNIQUE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `permissions` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL UNIQUE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `role_permissions` (
|
|
`role_id` INT NOT NULL,
|
|
`permission_id` INT NOT NULL,
|
|
PRIMARY KEY (`role_id`, `permission_id`),
|
|
FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`permission_id`) REFERENCES `permissions`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
INSERT IGNORE INTO `roles` (`name`) VALUES ('admin'), ('manager'), ('sales'), ('clerk');
|
|
|
|
INSERT IGNORE INTO `permissions` (`name`) VALUES
|
|
('create_application'),
|
|
('edit_application'),
|
|
('approve_application'),
|
|
('view_applications'),
|
|
('delete_application'),
|
|
('manage_users'),
|
|
('manage_roles'),
|
|
('upload_files'),
|
|
('delete_files');
|
|
|
|
INSERT IGNORE INTO `role_permissions` (`role_id`, `permission_id`)
|
|
SELECT (SELECT id FROM roles WHERE name = 'admin'), id FROM permissions;
|
|
|
|
INSERT IGNORE INTO `role_permissions` (`role_id`, `permission_id`)
|
|
SELECT (SELECT id FROM roles WHERE name = 'manager'), p.id
|
|
FROM permissions p
|
|
WHERE p.name IN ('create_application', 'edit_application', 'approve_application', 'view_applications', 'delete_application', 'upload_files', 'delete_files');
|
|
|
|
INSERT IGNORE INTO `role_permissions` (`role_id`, `permission_id`)
|
|
SELECT (SELECT id FROM roles WHERE name = 'sales'), p.id
|
|
FROM permissions p
|
|
WHERE p.name IN ('create_application', 'edit_application', 'view_applications', 'upload_files', 'delete_files');
|
|
|
|
INSERT IGNORE INTO `role_permissions` (`role_id`, `permission_id`)
|
|
SELECT (SELECT id FROM roles WHERE name = 'clerk'), p.id
|
|
FROM permissions p
|
|
WHERE p.name = 'view_applications';
|
|
|
|
INSERT IGNORE INTO `users` (`username`, `password`, `role_id`) VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', (SELECT id FROM roles WHERE name = 'admin')); -- password is 'password' |