chore(iam): 添加 IAM 数据库初始化脚本
包含 6 张 IAM 表结构与 teacher/admin 默认角色种子数据,用于 P1 端到端验证。
This commit is contained in:
58
scripts/iam-init.sql
Normal file
58
scripts/iam-init.sql
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
-- IAM 服务表结构(P2 身份阶段)
|
||||||
|
CREATE TABLE IF NOT EXISTS `iam_users` (
|
||||||
|
`id` CHAR(36) NOT NULL,
|
||||||
|
`email` VARCHAR(255) NOT NULL,
|
||||||
|
`password_hash` VARCHAR(255) NOT NULL,
|
||||||
|
`name` VARCHAR(100) NOT NULL,
|
||||||
|
`status` VARCHAR(20) NOT NULL DEFAULT 'active',
|
||||||
|
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `iam_users_email_unique` (`email`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `iam_roles` (
|
||||||
|
`id` CHAR(36) NOT NULL,
|
||||||
|
`name` VARCHAR(50) NOT NULL,
|
||||||
|
`description` VARCHAR(255) NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `iam_roles_name_unique` (`name`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `iam_user_roles` (
|
||||||
|
`user_id` CHAR(36) NOT NULL,
|
||||||
|
`role_id` CHAR(36) NOT NULL,
|
||||||
|
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`user_id`, `role_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `iam_permissions` (
|
||||||
|
`id` CHAR(36) NOT NULL,
|
||||||
|
`name` VARCHAR(100) NOT NULL,
|
||||||
|
`resource` VARCHAR(50) NOT NULL,
|
||||||
|
`action` VARCHAR(50) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `iam_permissions_name_unique` (`name`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `iam_role_permissions` (
|
||||||
|
`role_id` CHAR(36) NOT NULL,
|
||||||
|
`permission_id` CHAR(36) NOT NULL,
|
||||||
|
PRIMARY KEY (`role_id`, `permission_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `iam_refresh_tokens` (
|
||||||
|
`id` CHAR(36) NOT NULL,
|
||||||
|
`user_id` CHAR(36) NOT NULL,
|
||||||
|
`token_hash` VARCHAR(255) NOT NULL,
|
||||||
|
`expires_at` TIMESTAMP NOT NULL,
|
||||||
|
`revoked_at` TIMESTAMP NULL,
|
||||||
|
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
INDEX `idx_iam_refresh_tokens_user_id` (`user_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- 种子数据:默认 teacher 角色
|
||||||
|
INSERT IGNORE INTO `iam_roles` (`id`, `name`, `description`) VALUES
|
||||||
|
('00000000-0000-0000-0000-000000000001', 'teacher', '教师角色'),
|
||||||
|
('00000000-0000-0000-0000-000000000002', 'admin', '管理员角色');
|
||||||
Reference in New Issue
Block a user