feat: enforce trip membership and role authorization

This commit is contained in:
Bastian Wagner
2026-08-17 15:13:23 +02:00
parent ddf1d03447
commit baae15dcbc
13 changed files with 517 additions and 9 deletions

View File

@@ -0,0 +1,34 @@
import { Injectable, NotFoundException } from '@nestjs/common';
import { TripMembersRepository } from './trip-members.repository';
import type {
TripMember,
TripMemberRole,
TripMemberStatus,
} from './trip.types';
@Injectable()
export class TripMembersService {
constructor(private readonly repository: TripMembersRepository) {}
listMembers(tripId: string): Promise<TripMember[]> {
return this.repository.listByTrip(tripId);
}
async updateMember(
tripId: string,
memberId: string,
patch: { role?: TripMemberRole; status?: TripMemberStatus },
): Promise<TripMember> {
const updated = await this.repository.updateRoleOrStatus(
tripId,
memberId,
patch,
);
if (!updated) throw new NotFoundException('Trip member not found');
return updated;
}
removeMember(tripId: string, memberId: string): Promise<void> {
return this.repository.remove(tripId, memberId);
}
}