Add global branding and implement member ID system
All checks were successful
Build And Push Image / docker (push) Successful in 3m2s

- Add MonacoUSA logo component with global header placement
- Implement member ID generation and migration system
- Create profile page and improve dashboard navigation
- Add member ID as payment reference in dues banner
- Enable support contact functionality with pre-filled email
This commit is contained in:
2025-08-10 16:49:23 +02:00
parent e33f32e15a
commit ecae3795ee
9 changed files with 986 additions and 9 deletions

View File

@@ -1,5 +1,6 @@
import { createMember, handleNocoDbError } from '~/server/utils/nocodb';
import { createSessionManager } from '~/server/utils/session';
import { generateMemberID } from '~/server/utils/member-id';
import type { Member, MembershipStatus } from '~/utils/types';
export default defineEventHandler(async (event) => {
@@ -50,7 +51,7 @@ export default defineEventHandler(async (event) => {
}
// Sanitize and prepare data
const memberData = sanitizeMemberData(normalizedBody);
const memberData = await sanitizeMemberData(normalizedBody);
console.log('[api/members.post] Sanitized data fields:', Object.keys(memberData));
// Create member in NocoDB
@@ -109,9 +110,14 @@ function validateMemberData(data: any): string[] {
return errors;
}
function sanitizeMemberData(data: any): Partial<Member> {
async function sanitizeMemberData(data: any): Promise<Partial<Member>> {
const sanitized: any = {};
// Generate unique member ID
console.log('[api/members.post] Generating member ID for new member...');
sanitized.member_id = await generateMemberID();
console.log('[api/members.post] Generated member ID:', sanitized.member_id);
// Required fields
sanitized.first_name = data.first_name.trim();
sanitized.last_name = data.last_name.trim();