用户身份确认页面
页面概述
用户身份确认页面 (page-user-confirm) 是一个受企微路由守卫保护的单页面应用,用于展示当前企业微信用户的详细身份信息,并允许用户确认其身份。
import { WxworkSDK } from 'fmode-ng/core';
import { FmodeParse } from 'fmode-ng/parse';
import { WxworkAuthGuard } from 'fmode-ng';
访问路径
- 路径1: 
/:cid/auth/user-confirm 
- 路径2: 
/:cid/auth/:appId/user-confirm 
示例:
路由守卫
使用 WxworkAuthGuard 企微路由守卫,确保:
获取路由参数:
cid: 公司帐套ID (Company.objectId) 
appId: 应用ID (可选) 
 
识别用户身份:
- 企业员工: 通过 
UserId 识别,关联到 Profile 表 
- 外部用户: 通过 
external_userid 或 OpenId 识别,关联到 UserSocial 表 
 
数据持久化:
- localStorage 存储位置: 
{{cid}}/USERINFO 
- 获取函数: 
wxsdk.getUserinfo() 
 
功能模块
1. 用户信息加载
Profile (企业员工)
从 Parse Server 的 Profile 表查询用户信息,查询条件:
userId: 企业员工的微信UserId 
company: Pointer 指向当前 Company (cid) 
展示字段:
name: 姓名 
avatar: 头像 
mobile: 手机号 
email: 邮箱 
department: 部门 
position: 职位 
corpName: 企业名称 
isVerified: 身份确认状态 
userId: 员工ID 
UserSocial (外部用户)
从 Parse Server 的 UserSocial 表查询用户信息,查询条件:
externalUserId: 外部用户的微信external_userid 
company: Pointer 指向当前 Company (cid) 
展示字段:
name: 姓名 
avatar: 头像 
mobile: 手机号 
externalName: 外部名称 
externalType: 外部用户类型 
corpName: 企业名称 
isVerified: 身份确认状态 
externalUserId: 外部用户ID 
2. 用户信息展示
页面采用卡片式布局,包含以下区域:
头像区域
- 居中展示用户头像(圆形,100px)
 
- 无头像时显示默认占位图标
 
- 显示用户姓名
 
- 显示用户类型标签(企业员工/外部用户)
 
身份状态徽章
- 已确认: 绿色徽章,显示"已确认身份"和对勾图标
 
- 待确认: 黄色徽章,显示"待确认"
 
详细信息列表
根据用户类型展示不同的字段信息,每项包含:
3. 身份确认功能
确认按钮状态
- 可点击: 用户未确认 && 用户记录存在 && 未加载中
 
- 禁用: 用户已确认 || 用户记录不存在 || 加载中
 
确认流程
- 点击"确认身份"按钮
 
- 更新对应表记录的 
isVerified 字段为 true 
- 显示成功提示
 
- 更新页面状态为"已确认身份"
 
异常处理
- 用户记录不存在: 提示"系统中未找到您的用户记录,请联系管理员"
 
- 确认失败: 显示错误提示信息
 
数据模型
Profile 表
| 字段 | 
类型 | 
说明 | 
| userId | 
String | 
企业员工微信UserId | 
| company | 
Pointer
 | 所属企业 | 
| name | 
String | 
姓名 | 
| avatar | 
String | 
头像URL | 
| mobile | 
String | 
手机号 | 
| email | 
String | 
邮箱 | 
| department | 
String | 
部门 | 
| position | 
String | 
职位 | 
| corpName | 
String | 
企业名称 | 
| isVerified | 
Boolean | 
身份确认状态 | 
UserSocial 表
| 字段 | 
类型 | 
说明 | 
| externalUserId | 
String | 
外部用户微信external_userid | 
| company | 
Pointer
 | 所属企业 | 
| name | 
String | 
姓名 | 
| avatar | 
String | 
头像URL | 
| mobile | 
String | 
手机号 | 
| externalName | 
String | 
外部名称 | 
| type | 
String | 
外部用户类型 | 
| corpName | 
String | 
企业名称 | 
| isVerified | 
Boolean | 
身份确认状态 | 
UI/UX 设计
布局特点
- 响应式设计,适配移动端和桌面端
 
- 居中布局,最大宽度600px
 
- 卡片式信息展示,清晰分层
 
- 图标辅助,增强信息可读性
 
交互状态
- 加载状态: 显示加载动画和提示文字
 
- 信息展示: 完整展示用户信息
 
- 确认成功: 按钮变为禁用状态,徽章变为绿色
 
- 错误状态: 显示友好的错误提示
 
视觉元素
- 主色调: Ionic 默认主题色 (#3880ff)
 
- 成功色: 绿色 (success)
 
- 警告色: 黄色 (warning)
 
- 字体大小:
- 标题: 20px
 
- 用户名: 24px
 
- 正文: 16px
 
- 辅助文本: 14px
 
 
技术实现
核心依赖
- Angular: 独立组件架构
 
- Ionic: UI 组件库
 
- fmode-ng:
WxworkSDK: 企微SDK 
FmodeParse: Parse Server 数据服务 
 
主要方法
ngOnInit()
- 获取路由参数 (cid, appId)
 
- 调用 
loadUserInfo() 加载用户信息 
loadUserInfo()
- 初始化 WxworkSDK
 
- 从 localStorage 获取缓存的用户信息
 
- 根据用户类型调用相应的加载方法
 
loadProfileInfo(userId: string)
- 查询 Profile 表
 
- 构建 UserInfo 对象
 
loadUserSocialInfo(cachedInfo: any)
- 查询 UserSocial 表
 
- 构建 UserInfo 对象
 
confirmIdentity()
- 更新 isVerified 字段为 true
 
- 刷新页面状态
 
- 显示成功提示
 
使用场景
场景1: 首次登录确认
企业员工首次通过企业微信进入系统时,需要确认其身份信息,系统记录确认状态。
场景2: 外部用户验证
外部客户通过企业微信接入时,展示其在系统中的信息,确认身份后才能使用完整功能。
场景3: 信息核对
管理员可以引导用户访问此页面,核对和更新用户信息。
扩展性
未来可能的增强功能
- 允许用户编辑部分信息(如手机号、邮箱)
 
- 添加人脸识别或其他二次验证
 
- 记录确认时间和IP地址
 
- 支持批量身份确认
 
- 增加身份过期和重新确认机制
 
注意事项
- 路由守卫: 必须配置 
WxworkAuthGuard,否则无法获取用户信息 
- 数据隐私: 敏感信息需要适当脱敏显示
 
- 错误处理: 网络异常、Parse查询失败等都需要友好提示
 
- 状态同步: isVerified 状态更新后需要同步到其他使用该字段的模块
 
- 权限控制: 未确认身份的用户可能需要限制部分功能访问
 
文件结构
src/modules/auth/page-user-confirm/
├── page-user-confirm.component.ts       # 组件逻辑
├── page-user-confirm.component.html     # 模板
├── page-user-confirm.component.scss     # 样式
└── page-user-confirm.component.spec.ts  # 单元测试
路由配置
// app.routes.ts
{
    path:"auth/:cid/user-confirm",
    canActivate:[WxworkAuthGuard],
    loadComponent:()=>import("../modules/auth/page-user-confirm/page-user-confirm.component")
        .then((m)=>m.PageUserConfirmComponent)
}