---
# System prepended metadata

title: User Profile

---

PRD
一、概述

本模块名为User Profile，旨在提供用户个人信息和所属组织列表的展示和编辑功能。

 二、用户使用旅程

1. 用户点击User Profile模块进入个人信息页面。
2. 用户可以查看自己的头像、用户名、姓名、简介、所属机构、地理位置和网站等信息。
3. 用户可以点击其他社交媒体网站链接，跳转至相应页面。
4. 用户可以点击"edit"按钮，进入个人信息编辑页面，修改公开信息、绑定的邮箱、密码。
5. 用户可以查看所属组织列表。
6. 用户可以点击每个组织，跳转至组织页面。
7. 用户根据在不同组织的角色和权限进行相应操作（详见organization management PRD）。
8. 用户可以点击页面右上角的搜索栏，进行搜索操作。
9. 用户可以点击页面右上角的"创建组织"按钮，创建新的组织。
10. 用户可以点击页面右上角的"查看notification"按钮，查看通知信息。

 三、实现逻辑

- 用户个人信息和组织列表的数据来源为用户账号信息和组织数据库。
- 用户个人信息的展示和编辑功能通过与后端API的交互实现。
- 组织列表的展示和跳转功能通过与后端API的交互实现。

 四、相关页面

 User Profile页面
- 本页面主要展示用户公开的个人信息和所属组织列表。
- 用户公开个人信息区域的元素有：
    - 用户头像
    - 用户名
    - 姓名
    - 邮箱
    - 简介
    - 所属机构
    - 地理位置
    - 网站
    - 其他社交媒体网站链接
    - "edit"按钮
- 组织列表区域的元素有：
    - 组织名称
    - 组织图标
    - 组织描述
  
- 页面右上角的功能按钮有：
    - 搜索栏
    - "创建组织"按钮
    - "查看notification"按钮

 五、功能详细描述

 User Profile模块

- 本模块的作用是展示和编辑用户个人信息以及所属组织列表。

 用户个人信息展示功能

- 功能描述：展示用户的公开信息，包括头像、用户名、姓名、简介、所属机构、地理位置和网站等信息。
- 使用步骤：用户进入User Profile页面即可查看个人信息。
- 功能点：
    1. 头像展示：展示用户的头像图片。
    2. 用户名展示：展示用户的用户名。
    3. 姓名展示：展示用户的姓名。
    4. 邮箱展示：展示用户的邮箱。
    5. 简介展示：展示用户的简介。
    6. 所属机构展示：展示用户所属的机构。
    7. 地理位置展示：展示用户的地理位置。
    8. 网站展示：展示用户的网站链接。
    9. 其他社交媒体网站展示：展示用户的其他社交媒体网站链接。
- 异常情况及处理：如果用户未填写某些非必填信息，则相应的信息展示为空。
- 涉及字段：头像、用户名、姓名、邮箱、简介、所属机构、地理位置、网站、其他社交媒体网站链接。

 点击“edit”后的除密码和邮箱以外的用户个人信息编辑功能

- 功能描述：用户可以通过edit按钮编辑个人信息，包括公开和非公开的信息。
- 使用步骤：用户点击"edit"按钮，进入个人信息编辑页面，修改相应信息后保存。
- 功能点：
    1. 个人信息编辑页面：展示用户的除邮箱外公开个人信息，并提供编辑功能。
    2. 个人信息修改：用户可以修改除邮箱外的公开个人信息。
    3. 保存修改：用户点击保存按钮后，修改的个人信息将被保存。
- 异常情况及处理：无。
- 涉及字段：除密码和邮箱外的个人信息字段。

点击“edit”后的用户邮箱修改功能

- 功能描述：用户可以添加/修改/删除绑定的邮箱。
- 使用步骤：用户在edit页面的侧边栏中切换到emails页面，进行相应的操作。
- 功能点：
    1. 输入新的邮箱：用户可以输入新的邮箱。
    2. 点击确认按钮：用户点击确认按钮后，系统进行邮箱合法性验证。
    3. 邮箱已被绑定处理：如果新的邮箱账号已被绑定在另一个账户，则显示"该邮箱已被绑定"。
    4. 邮件确认发送：如果新的邮箱账号未被绑定，则显示"已发送确认邮件"。旧邮箱账号消失，新的邮箱账号旁显示"未确认"
    5. 邮箱确认刷新：用户在自己的邮箱里通过邮件确认后，该页面会自动刷新。
    6. 邮箱已绑定显示：刷新后，新的邮箱账号旁显示"已绑定"。
- 异常情况及处理：新的邮箱账号已被绑定在另一个账户时，显示"该邮箱已被绑定"。
- 涉及字段：邮箱。

点击“edit”后的Password功能
- 功能描述：用户可以修改密码。
- 使用步骤：用户在edit页面的侧边栏中切换到password页面，进行相应的操作。
- 功能点：
    1. old password：填入旧密码。
    2. new password：填入新密码。
    3. confirm new password：再次填入新密码进行确认。
    4. update password按钮：点击后更新密码。
- 异常情况及处理：
    - 异常情况：密码不符合以下要求：at least 15 characters OR at least 8 characters including a number and a lowercase letter。
    - 处理：不允许用户保存新密码，并提示“不符合要求”。
- 涉及字段：旧密码、新密码、确认新密码。
    
 组织列表展示功能

- 功能描述：展示用户所属的组织列表。
- 使用步骤：用户进入User Profile页面即可查看组织列表。
- 功能点：
    1. 组织名称展示：展示用户所属组织的名称。
    2. 组织图标展示：展示用户所属组织的图标。
    3. 组织描述展示：展示用户所属组织的描述。
    4. 组织角色和权限展示：展示用户在不同组织的角色和权限。
- 异常情况及处理：如果用户未加入或创建任何组织，则组织列表为空。
- 涉及字段：组织名称、组织图标、组织描述、组织角色和权限。

 组织跳转功能

- 功能描述：用户可以点击组织列表中的每个组织，跳转至相应组织的页面。
- 使用步骤：用户点击组织列表中的组织名称即可跳转至相应组织页面。
- 功能点：
    1. 组织页面跳转：用户点击组织名称后，页面跳转至相应组织的页面。
- 异常情况及处理：无。
- 涉及字段：组织名称。

 根据角色和权限进行操作 [详见 组织管理/organization management PRD]

- 功能描述：根据用户在不同组织的角色和权限，提供不同的操作功能。
- 使用步骤：用户根据自己在不同组织的角色和权限进行相应操作。
- 功能点：根据角色和权限的不同，提供相应的操作功能。
- 异常情况及处理：无。
- 涉及字段：用户角色和权限。

 页面功能按钮

- 功能描述：页面左上方和右上角的功能按钮提供额外的功能。
- 使用步骤：用户点击相应的功能按钮即可进行相应操作。
- 功能点：
    1. 搜索栏：用户可以在搜索栏中输入关键词进行搜索操作，搜索自己加入/创建的组织。
    2. "创建组织"按钮：点击后跳转至创建组织页面。
    3. "查看notification“：点击后查看收到的通知，例如邀请加入某个组织（待完善）。


字段
![WechatIMG3348](https://hackmd.io/_uploads/Hy-Jx174p.png)

测试用例
![Xnip2023-11-15_19-18-57](https://hackmd.io/_uploads/H1YBekmNa.jpg)




