fix(users): populate roles[] with primary role on user creation
All user-creation paths (admin create, bulk invite import, public application contact + team members, project team members, jury-group + special-award invites) now set roles=[role] so the invariant role in roles[] holds for new users, matching seed.ts and the role-change mutations. Prevents the empty roles[] inconsistency that hid primary-role mentors from the mentor picker. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -402,6 +402,7 @@ export const applicationRouter = router({
|
||||
email: data.contactEmail,
|
||||
name: data.contactName,
|
||||
role: 'APPLICANT',
|
||||
roles: ['APPLICANT'],
|
||||
status: 'ACTIVE',
|
||||
phoneNumber: data.contactPhone,
|
||||
},
|
||||
@@ -474,6 +475,7 @@ export const applicationRouter = router({
|
||||
email: member.email,
|
||||
name: member.name,
|
||||
role: 'APPLICANT',
|
||||
roles: ['APPLICANT'],
|
||||
status: 'NONE',
|
||||
},
|
||||
})
|
||||
@@ -790,6 +792,7 @@ export const applicationRouter = router({
|
||||
email: data.contactEmail,
|
||||
name: data.contactName,
|
||||
role: 'APPLICANT',
|
||||
roles: ['APPLICANT'],
|
||||
status: 'ACTIVE',
|
||||
phoneNumber: data.contactPhone,
|
||||
},
|
||||
|
||||
@@ -440,6 +440,7 @@ export const juryGroupRouter = router({
|
||||
email: invitee.email,
|
||||
name: invitee.name || null,
|
||||
role: 'JURY_MEMBER',
|
||||
roles: ['JURY_MEMBER'],
|
||||
status: 'INVITED',
|
||||
inviteToken,
|
||||
inviteTokenExpiresAt: new Date(Date.now() + expiryMs),
|
||||
|
||||
@@ -714,6 +714,7 @@ export const projectRouter = router({
|
||||
email: member.email.toLowerCase(),
|
||||
name: member.name,
|
||||
role: 'APPLICANT',
|
||||
roles: ['APPLICANT'],
|
||||
status: 'NONE',
|
||||
phoneNumber: member.phone || null,
|
||||
},
|
||||
|
||||
@@ -697,6 +697,7 @@ export const specialAwardRouter = router({
|
||||
email: invitee.email,
|
||||
name: invitee.name || null,
|
||||
role: 'JURY_MEMBER',
|
||||
roles: ['JURY_MEMBER'],
|
||||
status: 'INVITED',
|
||||
inviteToken,
|
||||
inviteTokenExpiresAt: new Date(Date.now() + expiryMs),
|
||||
|
||||
@@ -510,6 +510,7 @@ export const userRouter = router({
|
||||
const user = await ctx.prisma.user.create({
|
||||
data: {
|
||||
...input,
|
||||
roles: [input.role],
|
||||
status: 'INVITED',
|
||||
inviteToken,
|
||||
inviteTokenExpiresAt: new Date(Date.now() + expiryHours * 60 * 60 * 1000),
|
||||
@@ -811,6 +812,7 @@ export const userRouter = router({
|
||||
email: u.email.toLowerCase(),
|
||||
name: u.name,
|
||||
role: u.role,
|
||||
roles: [u.role],
|
||||
expertiseTags: u.expertiseTags,
|
||||
status: input.sendInvitation ? 'INVITED' : 'NONE',
|
||||
})),
|
||||
|
||||
Reference in New Issue
Block a user