diff --git a/admin/src/api/iam-v2.ts b/admin/src/api/iam-v2.ts new file mode 100644 index 000000000..b4bf71a57 --- /dev/null +++ b/admin/src/api/iam-v2.ts @@ -0,0 +1,37 @@ +import request from '@/utils/request' +export type IdentityOperation = { + kind: 'bind' | 'create_and_bind' | 'unbind' | 'rebind' | 'reconcile' + user_id: number + employee_id?: string + expected_version?: number + new_employee?: { username: string; display_name: string; email?: string } + reason: string +} +const prefix = '/iam/v2' +const opts = { isOpenRetry: false, ignoreCancelToken: true } +export const iamGet = (path: string, params?: Record): Promise => + request.get({ url: prefix + path, params, withCredentials: true }, opts) +export const iamPost = ( + path: string, + params: Record = {}, + key = crypto.randomUUID() +): Promise => + request.post( + { url: prefix + path, params, headers: { 'Idempotency-Key': key }, withCredentials: true }, + opts + ) +export const identityError = (e: any): string => + ({ + REAUTH_REQUIRED: '请先验证当前账号密码,或通过企业微信重新登录。', + ACCOUNT_MISMATCH: '两端账号不一致,请确认身份后重新发起。', + NOT_LINKED: '当前账号还未关联 IAM。', + NOT_AUTHORIZED: 'IAM 尚未授予目标应用访问权限。', + BINDING_CONFLICT: '关联已变更,请刷新后重新确认。', + PROTECTED_ACCOUNT_REVIEW_REQUIRED: '敏感账号需要双侧近期管理员核验,请由统一身份平台审核。', + SERVICE_UNAVAILABLE: '统一身份服务暂时不可用,状态未确认,请稍后重试。', + FEATURE_DISABLED: 'IAM 关联管理尚未启用。', + FORBIDDEN: '没有当前操作权限或目标超出数据范围。', + TRANSACTION_EXPIRED: '验证已过期或已经使用,请重新发起。' + })[e?.error?.code as string] || + e?.error?.code || + '操作未完成,请刷新状态后重试。' diff --git a/admin/src/components/iam-v2/launch.vue b/admin/src/components/iam-v2/launch.vue new file mode 100644 index 000000000..4fc0b1262 --- /dev/null +++ b/admin/src/components/iam-v2/launch.vue @@ -0,0 +1,32 @@ + + diff --git a/admin/src/components/iam-v2/personal.vue b/admin/src/components/iam-v2/personal.vue new file mode 100644 index 000000000..68960a9c8 --- /dev/null +++ b/admin/src/components/iam-v2/personal.vue @@ -0,0 +1,129 @@ + + diff --git a/admin/src/layout/default/components/header/index.vue b/admin/src/layout/default/components/header/index.vue index d73d38ce8..807d92d9e 100644 --- a/admin/src/layout/default/components/header/index.vue +++ b/admin/src/layout/default/components/header/index.vue @@ -22,6 +22,7 @@
+