fix: 资产信息字段显示隐藏根据角色
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m24s

This commit is contained in:
luo
2026-07-13 16:40:35 +08:00
parent 4c0207c6e6
commit 2c8524485b
11 changed files with 382 additions and 34 deletions

View File

@@ -0,0 +1,39 @@
# Change: 允许企业账号登录后台管理系统
## Why
当前前端登录流程会在登录接口成功返回后,基于 `user_type=4` 对企业账号做前端拦截,并提示“企业账号无法登录后台管理系统,请使用平台/代理账号登录”。这与最新业务要求不一致,导致企业账号即使后端已返回有效 token、菜单和权限也无法进入后台。
如果只保留现状,企业账号无法访问后台中已经按权限和菜单控制开放给它们的页面,也会与近期多项针对企业账号后台可见性和资产能力的变更方向相冲突。
## What Changes
- 移除前端登录流程中对 `user_type=4` 企业账号的后台登录拦截。
- 企业账号登录成功后,前端应与其他账号类型一致地:
- 保存 token
- 保存用户信息
- 保存权限、菜单和按钮数据
- 在存在可用后台菜单和权限时,继续进入后台默认首页/重定向目标页
- 当登录接口成功但 `menus` 为空或 `permissions` 为空时:
- 前端仅提示“当前账号暂无任何权限,请联系管理员分配角色和权限”
- 不继续进入后台首页或动态路由注册流程
- 不作为这条提示的后续动作调用退出登录接口
- 登录成功后的页面访问边界继续由现有菜单、路由权限、按钮权限和后端接口权限共同控制。
- 本提案不要求本次同步放开所有企业账号受限接口或页面;仅调整“企业账号能否进入后台”的前端准入逻辑。
- 本提案不修改登录接口路径、请求参数或返回结构。
## Impact
- Affected specs:
- `admin-authentication`
- Affected code:
- `src/composables/useLogin.ts`
- `src/router/guards/beforeEach.ts`
- `src/router/guards/permission.ts`
- `src/App.vue`
- 其他依赖当前登录态、菜单和权限进行页面准入的后台入口逻辑
- Dependencies:
- 后端登录接口继续允许企业账号返回有效 `access_token``user``permissions``menus``buttons`
- 企业账号需要至少具备一部分后台菜单或权限,才能进入可访问页面
- Breaking changes:
- 无外部接口破坏性变更;本次为前端登录准入行为放宽

View File

@@ -0,0 +1,70 @@
## ADDED Requirements
### Requirement: Enterprise Account Admin Login Admission
The admin login flow SHALL allow enterprise accounts whose `user_type` is `4` to sign in to the admin system when the login API returns a successful response with valid authentication data.
The frontend MUST NOT reject admin login solely because `user_type` equals `4`.
#### Scenario: Enterprise account is allowed to complete admin login
- **GIVEN** 用户使用企业账号凭证登录后台管理系统
- **AND** 登录接口返回成功状态
- **AND** 返回数据包含有效 `access_token`
- **AND** 返回数据中的 `user.user_type``4`
- **WHEN** 前端处理登录成功响应
- **THEN** 前端 MUST 继续执行后台登录成功流程
- **AND** MUST NOT 弹出“企业账号无法登录后台管理系统,请使用平台/代理账号登录”提示
#### Scenario: Enterprise account login still fails when login API itself fails
- **GIVEN** 用户使用企业账号凭证登录后台管理系统
- **AND** 登录接口返回失败状态,或未返回有效 `access_token`
- **WHEN** 前端处理登录响应
- **THEN** 前端 MUST 继续按现有登录失败流程处理
- **AND** MUST NOT 将“允许企业账号登录后台”解释为绕过登录接口失败
### Requirement: Enterprise Account Login State Persistence
The admin login flow SHALL persist enterprise-account login state using the same token, user, permissions, menus, and buttons handling used for other successful admin logins only when the login response provides usable admin-access data.
#### Scenario: Enterprise account saves auth state after successful login with usable admin access data
- **GIVEN** 用户使用企业账号成功登录后台管理系统
- **AND** 登录返回中包含 `access_token``refresh_token``user``permissions``menus``buttons`
- **AND** `permissions` 非空
- **AND** `menus` 非空
- **WHEN** 前端写入登录态
- **THEN** 前端 MUST 保存 token
- **AND** MUST 保存用户信息
- **AND** MUST 保存权限、菜单和按钮数据
#### Scenario: Enterprise account shows no-permission warning without logout follow-up
- **GIVEN** 用户使用企业账号成功登录后台管理系统
- **AND** 登录返回中的 `permissions` 为空,或 `menus` 为空
- **WHEN** 前端处理登录成功响应
- **THEN** 前端 MUST 继续显示现有“当前账号暂无任何权限,请联系管理员分配角色和权限”提示
- **AND** MUST NOT 因为空权限或空菜单回退为企业账号登录拦截
- **AND** MUST NOT 继续进入后台首页或动态路由注册流程
- **AND** MUST NOT 因这条无权限提示而调用退出登录接口
### Requirement: Enterprise Account Admin Entry Uses Existing Authorization Boundaries
Allowing enterprise accounts to sign in to the admin system SHALL NOT by itself grant additional page or API access beyond the existing menu, route-permission, button-permission, and backend authorization boundaries.
#### Scenario: Enterprise account enters admin and follows existing route registration flow
- **GIVEN** 用户使用企业账号成功登录后台管理系统
- **AND** 登录返回中的 `permissions` 非空
- **AND** 登录返回中的 `menus` 非空
- **WHEN** 前端进入登录后的路由注册和首页跳转流程
- **THEN** 前端 MUST 继续按现有菜单和动态路由注册逻辑处理
- **AND** MUST NOT 因 `user_type=4` 在该阶段额外拒绝用户进入后台
#### Scenario: Enterprise account page access remains permission-controlled
- **GIVEN** 用户已使用企业账号登录后台管理系统
- **WHEN** 用户尝试访问某个后台页面或触发某个后台操作
- **THEN** 页面访问和操作可用性 MUST 继续由现有菜单、路由权限、按钮权限和后端接口鉴权决定
- **AND** 允许登录后台本身 MUST NOT 被解释为默认拥有全部后台页面和操作权限

View File

@@ -0,0 +1,17 @@
## 1. Login Flow
- [x] 1.1 移除登录成功后对 `user_type=4` 企业账号的前端拒绝逻辑和错误提示。
- [x] 1.2 确保企业账号在登录成功后与其他账号一样完成 token、用户信息、权限、菜单、按钮的保存流程。
- [x] 1.3 当登录成功但 `menus``permissions` 为空时,仅提示“当前账号暂无任何权限,请联系管理员分配角色和权限”并停止后续登录流程,不调用退出登录接口。
## 2. Navigation And Access
- [x] 2.1 确保企业账号在具备可用后台菜单和权限时,继续走现有后台首页跳转和路由注册流程,不因账号类型被额外拦截。
- [x] 2.2 确认企业账号后台访问范围仍由现有菜单、路由权限和后端接口权限控制,而不是在登录阶段一刀切拒绝。
## 3. Verification
- [ ] 3.1 验证企业账号登录成功后不再出现“企业账号无法登录后台管理系统,请使用平台/代理账号登录”提示。
- [ ] 3.2 验证企业账号在具备可用后台菜单和权限时,能正常保存登录态并进入后台首页或重定向目标页。
- [ ] 3.3 验证企业账号在菜单为空或权限为空时,仅提示“暂无任何权限”,且不会继续调用退出登录接口。
- [ ] 3.4 验证平台账号和代理账号登录流程不受影响。