74 lines
2.5 KiB
SQL
74 lines
2.5 KiB
SQL
-- Initial Schema for User Management
|
|
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`email` VARCHAR(255) NOT NULL UNIQUE,
|
|
`password` VARCHAR(255) NOT NULL,
|
|
`profile_picture` VARCHAR(255) DEFAULT NULL,
|
|
`is_suspended` BOOLEAN DEFAULT FALSE,
|
|
`api_allowed` BOOLEAN DEFAULT TRUE,
|
|
`last_login` DATETIME DEFAULT NULL,
|
|
`last_login_ip` VARCHAR(45) DEFAULT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `groups` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL UNIQUE,
|
|
`description` TEXT
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `user_groups` (
|
|
`user_id` INT,
|
|
`group_id` INT,
|
|
PRIMARY KEY (`user_id`, `group_id`),
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`group_id`) REFERENCES `groups`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `permissions` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL UNIQUE,
|
|
`description` TEXT
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `group_permissions` (
|
|
`group_id` INT,
|
|
`permission_id` INT,
|
|
PRIMARY KEY (`group_id`, `permission_id`),
|
|
FOREIGN KEY (`group_id`) REFERENCES `groups`(`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`permission_id`) REFERENCES `permissions`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `login_logs` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT,
|
|
`ip_address` VARCHAR(45),
|
|
`login_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`status` ENUM('success', 'failed'),
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE SET NULL
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `active_sessions` (
|
|
`session_id` VARCHAR(128) NOT NULL PRIMARY KEY,
|
|
`user_id` INT NOT NULL UNIQUE,
|
|
`login_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`ip_address` VARCHAR(45),
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
-- Default Data
|
|
INSERT INTO `groups` (`id`, `name`, `description`) VALUES
|
|
(1, 'SuperAdmin', 'Full access to all system features.'),
|
|
(2, 'Admin', 'Administrative access to most features.'),
|
|
(3, 'User', 'Standard user access.');
|
|
|
|
-- Default SuperAdmin User (password: password123)
|
|
INSERT INTO `users` (`id`, `name`, `email`, `password`) VALUES
|
|
(1, 'Super Admin', 'admin@example.com', '$2y$10$fA.o.f8b.5L9zJ/Zc.915eB0GA9gISfCj2L5kI/A5d.4b5I3.f0Fm');
|
|
|
|
INSERT INTO `user_groups` (`user_id`, `group_id`) VALUES (1, 1);
|
|
|