fixes
Some checks failed
Build And Push Image / docker (push) Has been cancelled

This commit is contained in:
2025-08-13 18:55:49 +02:00
parent 9b183b48cc
commit b49148cf95
5 changed files with 391 additions and 57 deletions

View File

@@ -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}`);

View File

@@ -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,