Skip to content

Commit 87318be

Browse files
committed
chore(api): add memberIdOrLfid support in param and user validation endpoints
- Add endpoints for detected identities, work history status, and user validation (identity/org) supporting both memberId and LFID - Implement memberIdOrLfid middleware for flexible ID resolution - Update permissions and roles for new endpoints and external service access - Add audit logging for user validation actions - Refactor and extend data-access-layer for new validation and activity count logic - Add migrations for memberUserValidations table
1 parent 1700357 commit 87318be

31 files changed

+547
-45
lines changed

backend/src/api/member/identity/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { safeWrap } from '@/middlewares/errorMiddleware'
2+
import { memberIdOrLfidMiddleware } from '@/middlewares/memberIdOrLfidMiddleware'
23

34
export default (app) => {
45
// Member Identity List
@@ -15,4 +16,8 @@ export default (app) => {
1516

1617
// Member Identity Delete
1718
app.delete(`/member/:memberId/identity/:id`, safeWrap(require('./memberIdentityDelete').default))
19+
20+
app.get(`/member/:memberIdOrLfid/detected-identity`, memberIdOrLfidMiddleware, safeWrap(require('./memberIdentityDetectedList').default))
21+
22+
app.post(`/member/:memberIdOrLfid/user-validation`, memberIdOrLfidMiddleware, safeWrap(require('./memberIdentityUserValidation').default))
1823
}

backend/src/api/member/identity/memberIdentityCreate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
1717
* @response 429 - Too many requests
1818
*/
1919
export default async (req, res) => {
20-
new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
20+
new PermissionChecker(req).validateHas(Permissions.values.memberIdentityCreate)
2121

2222
const memberIdentityService = new MemberIdentityService(req)
2323

backend/src/api/member/identity/memberIdentityCreateMultiple.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
1717
* @response 429 - Too many requests
1818
*/
1919
export default async (req, res) => {
20-
new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
20+
new PermissionChecker(req).validateHas(Permissions.values.memberIdentityCreate)
2121

2222
const memberIdentityService = new MemberIdentityService(req)
2323

backend/src/api/member/identity/memberIdentityDelete.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
1818
* @response 429 - Too many requests
1919
*/
2020
export default async (req, res) => {
21-
new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
21+
new PermissionChecker(req).validateHas(Permissions.values.memberIdentityDestroy)
2222

2323
const memberIdentityService = new MemberIdentityService(req)
2424

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import MemberIdentityService from '@/services/member/memberIdentityService'
2+
3+
import Permissions from '../../../security/permissions'
4+
import PermissionChecker from '../../../services/user/permissionChecker'
5+
6+
/**
7+
* GET /member/:memberIdOrLfid/detected-identity
8+
* @summary Query detected identities for a given LFID or memberID
9+
* @tag Members
10+
* @security Bearer
11+
* @description Query detected identities for a given LFID or memberID
12+
* @pathParam {string} memberIdOrLfid - member ID or LFID
13+
* @response 200 - Ok
14+
* @responseContent {MemberList} 200.application/json
15+
* @responseExample {MemberList} 200.application/json.Member
16+
* @response 401 - Unauthorized
17+
* @response 404 - Not found
18+
* @response 429 - Too many requests
19+
*/
20+
export default async (req, res) => {
21+
new PermissionChecker(req).validateHas(Permissions.values.memberIdentityRead)
22+
23+
const memberIdentityService = new MemberIdentityService(req)
24+
25+
const payload = await memberIdentityService.detectedList(req.memberId)
26+
27+
await req.responseHandler.success(req, res, payload)
28+
}

backend/src/api/member/identity/memberIdentityList.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
1818
* @response 429 - Too many requests
1919
*/
2020
export default async (req, res) => {
21-
new PermissionChecker(req).validateHas(Permissions.values.memberRead)
21+
new PermissionChecker(req).validateHas(Permissions.values.memberIdentityRead)
2222

2323
const memberIdentityService = new MemberIdentityService(req)
2424

backend/src/api/member/identity/memberIdentityUpdate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
1818
* @response 429 - Too many requests
1919
*/
2020
export default async (req, res) => {
21-
new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
21+
new PermissionChecker(req).validateHas(Permissions.values.memberIdentityEdit)
2222

2323
const memberIdentityService = new MemberIdentityService(req)
2424

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import MemberIdentityService from '@/services/member/memberIdentityService'
2+
3+
import Permissions from '../../../security/permissions'
4+
import PermissionChecker from '../../../services/user/permissionChecker'
5+
6+
/**
7+
* POST /member/:memberIdOrLfid/user-validation
8+
* @summary Create user validation for member identity
9+
* @tag Members
10+
* @security Bearer
11+
* @description Creates user validation when identity is accepted or rejected.
12+
* @pathParam {string} memberIdOrLfid - member ID or LFID
13+
* @response 200 - Ok
14+
* @responseContent {MemberList} 200.application/json
15+
* @responseExample {MemberList} 200.application/json.MemberIdentity
16+
* @response 401 - Unauthorized
17+
* @response 429 - Too many requests
18+
*/
19+
export default async (req, res) => {
20+
new PermissionChecker(req).validateHas(Permissions.values.memberUserValidationCreate)
21+
22+
const memberIdentityService = new MemberIdentityService(req)
23+
24+
const payload = await memberIdentityService.userValidation(req.memberId, req.body)
25+
26+
await req.responseHandler.success(req, res, payload)
27+
}

backend/src/api/member/organization/index.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import { safeWrap } from '@/middlewares/errorMiddleware'
2+
import { memberIdOrLfidMiddleware } from '@/middlewares/memberIdOrLfidMiddleware'
23

34
export default (app) => {
45
// Member Organiaztion List
5-
app.get(`/member/:memberId/organization`, safeWrap(require('./memberOrganizationList').default))
6+
app.get(
7+
`/member/:memberIdOrLfid/organization`,
8+
memberIdOrLfidMiddleware,
9+
safeWrap(require('./memberOrganizationList').default),
10+
)
611

712
// Member Organiaztion Create
813
app.post(
@@ -21,4 +26,16 @@ export default (app) => {
2126
`/member/:memberId/organization/:id`,
2227
safeWrap(require('./memberOrganizationDelete').default),
2328
)
29+
30+
app.get(
31+
`/member/:memberIdOrLfid/organization/status`,
32+
memberIdOrLfidMiddleware,
33+
safeWrap(require('./memberOrganizationStatus').default),
34+
)
35+
36+
app.post(
37+
`/member/:memberIdOrLfid/organization/user-validation`,
38+
memberIdOrLfidMiddleware,
39+
safeWrap(require('./memberOrganizationUserValidation').default),
40+
)
2441
}

backend/src/api/member/organization/memberOrganizationCreate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
1616
* @response 429 - Too many requests
1717
*/
1818
export default async (req, res) => {
19-
new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
19+
new PermissionChecker(req).validateHas(Permissions.values.memberOrganizationCreate)
2020

2121
const memberOrganizationsService = new MemberOrganizationsService(req)
2222

0 commit comments

Comments
 (0)