fix: harden admin frontend contracts

This commit is contained in:
Bastian Wagner
2026-08-01 09:26:14 +02:00
parent 484c7473fb
commit d0ec000bff
3 changed files with 22 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
import { TestBed } from '@angular/core/testing';
import { provideHttpClient } from '@angular/common/http';
import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing';
import { AuthApi } from './auth-api';
import { AuthApi, RegistrationRequest } from './auth-api';
import { environment } from '../../../environments/environment';
import { User } from '../../models/user.model';
@@ -59,8 +59,8 @@ describe('AuthApi', () => {
request.flush(invitation);
});
it('registers and links an invited player', () => {
const registration = {
it('registers with only the supported account fields', () => {
const registrationWithLegacyField = {
email: 'alex@example.de',
password: 'secret1',
firstName: 'Alex',
@@ -68,11 +68,16 @@ describe('AuthApi', () => {
linkPlayerId: 7,
};
service.register(registration).subscribe();
service.register(registrationWithLegacyField as RegistrationRequest).subscribe();
const request = httpMock.expectOne(`${environment.apiUrl}auth/email/register`);
expect(request.request.method).toBe('POST');
expect(request.request.body).toEqual(registration);
expect(request.request.body).toEqual({
email: 'alex@example.de',
password: 'secret1',
firstName: 'Alex',
lastName: 'Muster',
});
request.flush(null);
});

View File

@@ -52,7 +52,13 @@ export class AuthApi {
}
register(request: RegistrationRequest): Observable<void> {
return this.http.post<void>(`${this.baseUrl}/email/register`, request);
const { email, password, firstName, lastName } = request;
return this.http.post<void>(`${this.baseUrl}/email/register`, {
email,
password,
firstName,
lastName,
});
}
forgotPassword(email: string): Observable<void> {

View File

@@ -52,12 +52,15 @@ export interface AdminUserProfileRequest {
lastName?: string | null;
}
export type AdminUserRoleId = 1 | 2;
export type AdminUserStatusId = 1 | 2;
export interface AdminUserRoleRequest {
role: number;
role: AdminUserRoleId;
}
export interface AdminUserStatusRequest {
status: number;
status: AdminUserStatusId;
}
export type AdminPlayerAssignmentFilter = 'all' | 'assigned' | 'unassigned';