56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
|
|
/**
|
||
|
|
* Shared role utilities used by ProfilePage, SwitchServicesPage, and any
|
||
|
|
* other page that needs to map a role key to an API path prefix.
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Maps a role key (e.g. "PHOTOGRAPHER") to the API path prefix used by that
|
||
|
|
* role's backend service (e.g. "photographers").
|
||
|
|
*
|
||
|
|
* Must stay in sync with the Axum router mounts in
|
||
|
|
* nxtgauge-backend-rust/apps/gateway/src/main.rs.
|
||
|
|
*/
|
||
|
|
export function roleKeyToPrefix(roleKey: string): string {
|
||
|
|
switch (roleKey) {
|
||
|
|
case "JOB_SEEKER": return "job-seekers";
|
||
|
|
case "COMPANY": return "company";
|
||
|
|
case "CATERING_SERVICES": return "catering-services";
|
||
|
|
case "MAKEUP_ARTIST": return "makeup-artists";
|
||
|
|
default:
|
||
|
|
// PHOTOGRAPHER → photographers, DEVELOPER → developers, etc.
|
||
|
|
return roleKey.toLowerCase().replace(/_/g, "-") + "s";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Field IDs that are considered "shared identity" documents by convention
|
||
|
|
* when the onboarding schema has not explicitly marked them with
|
||
|
|
* `identity_shared: true`. Admins can use these IDs to get automatic
|
||
|
|
* pre-fill from the user's active role — or they can mark any field with
|
||
|
|
* `identity_shared: true` to opt into pre-fill explicitly.
|
||
|
|
*/
|
||
|
|
export const CONVENTION_IDENTITY_FIELD_IDS = new Set([
|
||
|
|
"aadhaar",
|
||
|
|
"aadhaar_card",
|
||
|
|
"aadhaar_number",
|
||
|
|
"aadhar",
|
||
|
|
"pan",
|
||
|
|
"pan_card",
|
||
|
|
"pan_number",
|
||
|
|
"passport",
|
||
|
|
"passport_number",
|
||
|
|
"selfie",
|
||
|
|
"profile_photo",
|
||
|
|
"photo_id",
|
||
|
|
"address_proof",
|
||
|
|
"government_id",
|
||
|
|
]);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns true when a field should be pre-filled from the user's existing
|
||
|
|
* profile across roles (either admin-flagged or matched by convention).
|
||
|
|
*/
|
||
|
|
export function isIdentityField(fieldId: string, adminFlagged: boolean): boolean {
|
||
|
|
return adminFlagged || CONVENTION_IDENTITY_FIELD_IDS.has(fieldId);
|
||
|
|
}
|