User Access API#
What groups / roles / modules the caller has. Sourced entirely from the JWT + legacy tables — no admin-only endpoint yet.
- Endpoint:
GET /api/v1/users/me/access - Auth:
[Authorize](any valid JWT) - Jira: BFC-14
- ADR: 0005
- Legacy source:
aspmnx_groupUsers,aspmnx_GroupRoles,aspnet_Roles,aspnet_Profile,MnxModule
Flow#
flowchart LR
Req[GET /users/me/access] --> JWT[Extract sub claim]
JWT --> Svc[UserAccessService]
Svc --> G[aspmnx_groupUsers]
Svc --> R[aspmnx_GroupRoles → aspnet_Roles]
Svc --> M[MnxModule]
Svc --> P[aspnet_Profile admin flags]
G & R & M & P --> Merge[Merge into AccessDto]
Merge --> Resp[200 { groups, roles, modules, adminFlags }]Response shape#
{
"success": true,
"data": {
"userId": "<guid>",
"username": "compAdmin",
"groups": [{ "id": "<g>", "name": "..." }],
"roles": [{ "id": "<r>", "name": "SalesOrder.View" }],
"modules": [{ "id": 1, "name": "SGA", "isPermission": true }],
"adminFlags": {
"companyAdmin": true, "acctAdmin": true, "prodAdmin": true,
"scmAdmin": true, "crmAdmin": true, "engAdmin": true,
"capaAdmin": false, "superUser": false,
"projectsTasks": false, "isItarAuthorized": true
}
}
}Rules#
- Scoped to caller only: no
/users/{userId}/accesspath parameter — impossible to view another user’s access without admin tooling that doesn’t exist yet. - Merges group + direct permissions: legacy stored proc
aspmnx_GetRoles4UserModulesis faithfully reproduced in LINQ. - Follow-up BFC-33: an admin-only
/users/{userId}/accessroute is planned but blocked on reviewer for cross-tenant guard design.