改用API驗證
This commit is contained in:
36
migrations/fix_auth_architecture.sql
Normal file
36
migrations/fix_auth_architecture.sql
Normal file
@@ -0,0 +1,36 @@
|
||||
-- 修正認證系統架構
|
||||
-- 方案 A: 保留 dt_users 的 username 和 display_name,都使用 API 回傳的 name (姓名+email)
|
||||
-- 使用 email 作為主要唯一識別碼,sys_user 表專門記錄登入資訊
|
||||
-- Created: 2025-10-01
|
||||
|
||||
-- 1. 確保 dt_users 表的 email 唯一約束
|
||||
-- 先檢查是否有重複的 email,如果有則需要手動處理
|
||||
-- 因為有外鍵約束,不能直接刪除
|
||||
-- 先顯示重複的 email 記錄讓管理員確認
|
||||
-- SELECT email, COUNT(*) as count FROM dt_users GROUP BY email HAVING COUNT(*) > 1;
|
||||
|
||||
-- 添加 email 唯一約束
|
||||
ALTER TABLE dt_users
|
||||
ADD CONSTRAINT uk_dt_users_email UNIQUE (email);
|
||||
|
||||
-- 2. 調整現有欄位註解,說明新的使用方式
|
||||
ALTER TABLE dt_users
|
||||
MODIFY COLUMN username VARCHAR(255) NOT NULL COMMENT 'API name (姓名+email格式)',
|
||||
MODIFY COLUMN email VARCHAR(255) NOT NULL COMMENT '電子郵件 (主要識別鍵)';
|
||||
|
||||
-- 3. 保持 sys_user 表結構,但調整為專門記錄登入資訊
|
||||
-- sys_user 表通過 email 與 dt_users 關聯
|
||||
-- (保留現有的 sys_user 表,因為它是專門用於登入記錄)
|
||||
|
||||
-- 4. 重新命名 login_logs 為 dt_login_logs (配合專案命名規則)
|
||||
RENAME TABLE login_logs TO dt_login_logs;
|
||||
|
||||
-- 5. 更新 dt_login_logs 表結構 (配合 dt_users 的主鍵)
|
||||
ALTER TABLE dt_login_logs
|
||||
ADD COLUMN user_id INT COMMENT '關聯到 dt_users.id',
|
||||
ADD INDEX idx_user_id (user_id),
|
||||
ADD FOREIGN KEY fk_dt_login_logs_user_id (user_id) REFERENCES dt_users(id) ON DELETE SET NULL;
|
||||
|
||||
-- 6. 建立使用者識別索引 (支援 email 和 username 快速查詢)
|
||||
ALTER TABLE dt_users
|
||||
ADD INDEX idx_username_email (username, email);
|
Reference in New Issue
Block a user