This commit is contained in:
@@ -36,6 +36,11 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
console.log('[api/members/[id]/create-portal-account.post] Processing member ID:', memberId);
|
||||
|
||||
// Get request body for membershipTier
|
||||
const body = await readBody(event).catch(() => ({}));
|
||||
const requestedMembershipTier = body.membershipTier;
|
||||
console.log('[api/members/[id]/create-portal-account.post] Requested membership tier:', requestedMembershipTier);
|
||||
|
||||
// 1. Get member data
|
||||
const { getMemberById } = await import('~/server/utils/nocodb');
|
||||
const member = await getMemberById(memberId);
|
||||
@@ -81,8 +86,8 @@ export default defineEventHandler(async (event) => {
|
||||
});
|
||||
}
|
||||
|
||||
// 5. Determine membership tier based on member data
|
||||
const membershipTier = determineMembershipTier(member);
|
||||
// 5. Determine membership tier based on request or member data
|
||||
const membershipTier = determineMembershipTier(member, requestedMembershipTier);
|
||||
console.log('[api/members/[id]/create-portal-account.post] Determined membership tier:', membershipTier);
|
||||
|
||||
// 6. Prepare membership data for Keycloak sync
|
||||
@@ -191,7 +196,12 @@ export default defineEventHandler(async (event) => {
|
||||
* Determine membership tier based on member data
|
||||
* This function analyzes member information to assign appropriate portal roles
|
||||
*/
|
||||
function determineMembershipTier(member: any): 'user' | 'board' | 'admin' {
|
||||
function determineMembershipTier(member: any, requestedTier?: string): 'user' | 'board' | 'admin' {
|
||||
// If a valid tier was specifically requested, use that
|
||||
if (requestedTier && ['user', 'board', 'admin'].includes(requestedTier)) {
|
||||
console.log(`[determineMembershipTier] Using requested tier: ${requestedTier}`);
|
||||
return requestedTier as 'user' | 'board' | 'admin';
|
||||
}
|
||||
// Use stored portal_group value if available and valid
|
||||
if (member.portal_group && ['user', 'board', 'admin'].includes(member.portal_group)) {
|
||||
console.log(`[determineMembershipTier] Using stored portal_group: ${member.portal_group}`);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createMember, handleNocoDbError } from '~/server/utils/nocodb';
|
||||
import { createMember, handleNocoDbError, normalizeFieldsFromNocoDB } from '~/server/utils/nocodb';
|
||||
import { createSessionManager } from '~/server/utils/session';
|
||||
import { generateMemberID } from '~/server/utils/member-id';
|
||||
import type { Member, MembershipStatus } from '~/utils/types';
|
||||
@@ -55,17 +55,32 @@ export default defineEventHandler(async (event) => {
|
||||
console.log('[api/members.post] Sanitized data fields:', Object.keys(memberData));
|
||||
|
||||
// Create member in NocoDB
|
||||
const newMember = await createMember(memberData);
|
||||
const rawNewMember = await createMember(memberData);
|
||||
|
||||
console.log('[api/members.post] ✅ Member created successfully with ID:', newMember.Id);
|
||||
console.log('[api/members.post] ✅ Member created successfully with ID:', rawNewMember.Id);
|
||||
|
||||
// DIAGNOSTIC: Log raw member data structure from creation
|
||||
console.log('[api/members.post] DIAGNOSTIC - Raw created member:', JSON.stringify(rawNewMember, null, 2));
|
||||
console.log('[api/members.post] DIAGNOSTIC - Raw member fields:', Object.keys(rawNewMember));
|
||||
|
||||
// Return processed member
|
||||
// Apply field normalization (same as in get members API)
|
||||
const normalizedMember = normalizeFieldsFromNocoDB(rawNewMember);
|
||||
console.log('[api/members.post] Applied field normalization');
|
||||
console.log('[api/members.post] DIAGNOSTIC - Normalized first_name:', normalizedMember.first_name);
|
||||
console.log('[api/members.post] DIAGNOSTIC - Normalized last_name:', normalizedMember.last_name);
|
||||
|
||||
// Add computed fields (same as in get members API)
|
||||
const fullName = `${normalizedMember.first_name || ''} ${normalizedMember.last_name || ''}`.trim();
|
||||
const processedMember = {
|
||||
...newMember,
|
||||
FullName: `${newMember.first_name || ''} ${newMember.last_name || ''}`.trim(),
|
||||
FormattedPhone: formatPhoneNumber(newMember.phone)
|
||||
...normalizedMember,
|
||||
FullName: fullName,
|
||||
FormattedPhone: formatPhoneNumber(normalizedMember.phone)
|
||||
};
|
||||
|
||||
console.log('[api/members.post] DIAGNOSTIC - Final FullName:', `"${processedMember.FullName}"`);
|
||||
console.log('[api/members.post] DIAGNOSTIC - FullName calculation:',
|
||||
`"${normalizedMember.first_name || ''}" + " " + "${normalizedMember.last_name || ''}" = "${fullName}"`);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: processedMember,
|
||||
|
||||
Reference in New Issue
Block a user