e31cc54b8e
- 门户通用聊天:选择已批准模型直接对话,审批通过后自动开通用户级运行时 API Key(加密落库,限额取批准值),聊天经受管网关统一认证/限流/配额/审计; 会话哈希链完整性 + busy 租约防并发,失败不落库。 - 扫码登录:identity_providers 扩展 wecom/dingtalk/feishu,管理端配置 (AppID/AppSecret/AgentID/回调/自动开户/默认部门),登录页自动展示; one-time state 防 CSRF,provider_uid 全局唯一防多账号绑定,平台端点 固定公网 URL 复用 public-only 拨号。 - 个人安全策略:账号安全页(登录设备管理/吊销非当前会话/登录提醒开关/ 扫码绑定解绑),登录成功发布 security.login_detected 事件按偏好落站内信 (新增 security 类别),会话索引只存令牌摘要并惰性清理。 - 迁移 000038-000041;修复 social update 参数越界/凭据回读/路由挂载缺失; 全量测试 25 包通过,前端 admin/portal 构建通过,端到端验证完成。
31 lines
1.4 KiB
SQL
31 lines
1.4 KiB
SQL
-- 000039_social_login.sql — 企微/钉钉/飞书扫码登录。
|
|
-- 身份源表 identity_providers 扩展三种内置扫码登录 kind;企业用户与平台账号的
|
|
-- 绑定关系单独落表(provider_uid 全局唯一,防止同一企微账号绑定多个本系统账号)。
|
|
|
|
ALTER TABLE gateway.identity_providers
|
|
DROP CONSTRAINT IF EXISTS identity_providers_kind_check;
|
|
|
|
ALTER TABLE gateway.identity_providers
|
|
ADD CONSTRAINT identity_providers_kind_check
|
|
CHECK (kind IN ('oidc', 'saml', 'wecom', 'dingtalk', 'feishu'));
|
|
|
|
-- 扫码登录自动开通的账号 auth_source 记为平台 kind。
|
|
ALTER TABLE gateway.portal_users
|
|
DROP CONSTRAINT IF EXISTS portal_users_auth_source_check;
|
|
|
|
ALTER TABLE gateway.portal_users
|
|
ADD CONSTRAINT portal_users_auth_source_check
|
|
CHECK (auth_source IN ('local', 'feishu', 'oidc', 'saml', 'wecom', 'dingtalk'));
|
|
|
|
CREATE TABLE IF NOT EXISTS gateway.portal_user_provider_bindings (
|
|
portal_user_id uuid NOT NULL REFERENCES gateway.portal_users(id) ON DELETE CASCADE,
|
|
provider_kind varchar(16) NOT NULL CHECK (provider_kind IN ('wecom', 'dingtalk', 'feishu')),
|
|
provider_uid varchar(255) NOT NULL,
|
|
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
|
PRIMARY KEY (provider_kind, provider_uid),
|
|
UNIQUE (portal_user_id, provider_kind)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS portal_user_provider_bindings_user_idx
|
|
ON gateway.portal_user_provider_bindings (portal_user_id);
|