veza/apps/web/src/config/features.ts
senke 2f2fd47f7a [FE-API-001] frontend-api: Enable 2FA service calls when backend is ready
- Replaced axios with apiClient for automatic authentication
- Updated URLs to use /auth/2fa/* endpoints (was /2fa/*)
- Fixed verify() to accept (secret, code) matching backend
- Fixed disable() to accept password instead of code
- Enabled TWO_FACTOR_AUTH feature flag
- Service now properly calls backend endpoints

Phase: PHASE-1
Priority: P0
Progress: 9/267 (3.4%)
2025-12-23 01:45:47 +01:00

67 lines
1.7 KiB
TypeScript

/**
* Feature Flags Configuration
*
* Controls which features are enabled/disabled for MVP.
* Features marked as false are not yet implemented in the backend.
*
* TODO: Move these to environment variables or backend config after MVP.
*/
export const FEATURES = {
/**
* Two-Factor Authentication
* Backend endpoints: /auth/2fa/setup, /auth/2fa/verify, /auth/2fa/disable, /auth/2fa/status
*/
TWO_FACTOR_AUTH: true,
/**
* Playlist Collaboration Features
* Backend endpoints: /api/v1/playlists/:id/collaborators, /playlists/search, /playlists/:id/share, /playlists/recommendations (NOT IMPLEMENTED)
*/
PLAYLIST_COLLABORATION: false,
PLAYLIST_SEARCH: false,
PLAYLIST_SHARE: false,
PLAYLIST_RECOMMENDATIONS: false,
/**
* HLS Streaming
* Backend endpoints: /api/v1/tracks/:id/hls/info, /api/v1/tracks/:id/hls/status (NOT IMPLEMENTED)
*/
HLS_STREAMING: false,
/**
* Role Management
* Backend endpoints: /api/v1/users/:userId/roles, /api/v1/roles/* (NOT IMPLEMENTED)
*/
ROLE_MANAGEMENT: false,
/**
* Notifications API
* Backend endpoints: /api/v1/notifications/* (NOT IMPLEMENTED)
*/
NOTIFICATIONS: false,
} as const;
/**
* Type for feature flags
*/
export type FeatureFlag = keyof typeof FEATURES;
/**
* Check if a feature is enabled
*/
export function isFeatureEnabled(feature: FeatureFlag): boolean {
return Boolean(FEATURES[feature]);
}
/**
* Assert that a feature is enabled, throw error if not
*/
export function requireFeature(feature: FeatureFlag): void {
if (!isFeatureEnabled(feature)) {
throw new Error(
`Feature "${feature}" is not enabled. This feature is not available in the MVP.`,
);
}
}