Skip to content

Commit 208861b

Browse files
authored
fix: return conflict for duplicate verified member identities (CM-1133) (#4062)
Signed-off-by: Yeganathan S <63534555+skwowet@users.noreply.github.com>
1 parent 24204a6 commit 208861b

2 files changed

Lines changed: 26 additions & 5 deletions

File tree

backend/src/api/public/openapi.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,16 @@ paths:
319319
application/json:
320320
schema:
321321
$ref: '#/components/schemas/HttpError'
322+
'409':
323+
description: Identity is already verified on another member.
324+
content:
325+
application/json:
326+
schema:
327+
$ref: '#/components/schemas/HttpError'
328+
example:
329+
error:
330+
code: CONFLICT
331+
message: Identity already verified on another member
322332

323333
# ──────────────────────────────────────────────
324334
# Maintainer Roles

backend/src/api/public/v1/members/identities/verifyMemberIdentity.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
memberUnmergeAction,
77
memberVerifyIdentityAction,
88
} from '@crowd/audit-logs'
9-
import { InternalError, NotFoundError } from '@crowd/common'
9+
import { ConflictError, InternalError, NotFoundError } from '@crowd/common'
1010
import {
1111
invalidateMemberQueryCache,
1212
prepareMemberUnmerge,
@@ -85,10 +85,21 @@ export async function verifyMemberIdentity(req: Request, res: Response): Promise
8585
captureOldState(identity)
8686

8787
await qx.tx(async (tx) => {
88-
updatedIdentity = await updateMemberIdentity(tx, memberId, identityId, {
89-
verified,
90-
verifiedBy,
91-
})
88+
try {
89+
updatedIdentity = await updateMemberIdentity(tx, memberId, identityId, {
90+
verified,
91+
verifiedBy,
92+
})
93+
} catch (error) {
94+
const constraint =
95+
error.constraint ?? error.original?.constraint ?? error.parent?.constraint
96+
97+
if (verified && constraint === 'uix_memberIdentities_platform_value_type_verified') {
98+
throw new ConflictError('Identity already verified on another member')
99+
}
100+
101+
throw error
102+
}
92103

93104
if (!updatedIdentity) {
94105
throw new InternalError('Failed to update member identity')

0 commit comments

Comments
 (0)