diff --git a/lib/src/registry/model_registry.dart b/lib/src/registry/model_registry.dart index 54622de..0c7ad7a 100644 --- a/lib/src/registry/model_registry.dart +++ b/lib/src/registry/model_registry.dart @@ -188,7 +188,9 @@ final modelRegistry = >{ 'country': ModelConfig( fromJson: Country.fromJson, getId: (c) => c.id, - // Countries: Admin-owned, read allowed by standard/guest users + // Countries: Static data, read-only for all authenticated users. + // Modification is not allowed via the API as this is real-world data + // managed by database seeding. getCollectionPermission: const ModelActionPermission( type: RequiredPermissionType.specificPermission, permission: Permissions.countryRead, @@ -197,14 +199,32 @@ final modelRegistry = >{ type: RequiredPermissionType.specificPermission, permission: Permissions.countryRead, ), + postPermission: const ModelActionPermission(type: RequiredPermissionType.unsupported), + putPermission: const ModelActionPermission(type: RequiredPermissionType.unsupported), + deletePermission: const ModelActionPermission(type: RequiredPermissionType.unsupported), + ), + 'language': ModelConfig( + fromJson: Language.fromJson, + getId: (l) => l.id, + // Languages: Static data, read-only for all authenticated users. + // Modification is not allowed via the API as this is real-world data + // managed by database seeding. + getCollectionPermission: const ModelActionPermission( + type: RequiredPermissionType.specificPermission, + permission: Permissions.languageRead, + ), + getItemPermission: const ModelActionPermission( + type: RequiredPermissionType.specificPermission, + permission: Permissions.languageRead, + ), postPermission: const ModelActionPermission( - type: RequiredPermissionType.adminOnly, + type: RequiredPermissionType.unsupported, ), putPermission: const ModelActionPermission( - type: RequiredPermissionType.adminOnly, + type: RequiredPermissionType.unsupported, ), deletePermission: const ModelActionPermission( - type: RequiredPermissionType.adminOnly, + type: RequiredPermissionType.unsupported, ), ), 'user': ModelConfig( diff --git a/routes/api/v1/data/[id]/index.dart b/routes/api/v1/data/[id]/index.dart index f3db758..96b9ed0 100644 --- a/routes/api/v1/data/[id]/index.dart +++ b/routes/api/v1/data/[id]/index.dart @@ -107,6 +107,9 @@ Future _handleGet( case 'country': final repo = context.read>(); item = await repo.read(id: id, userId: userIdForRepoCall); + case 'language': + final repo = context.read>(); + item = await repo.read(id: id, userId: userIdForRepoCall); case 'user': // Handle User model specifically if needed, or rely on generic final repo = context.read>(); item = await repo.read(id: id, userId: userIdForRepoCall); @@ -309,6 +312,15 @@ Future _handlePut( userId: userIdForRepoCall, ); } + case 'language': + { + final repo = context.read>(); + updatedItem = await repo.update( + id: id, + item: itemToUpdate as Language, + userId: userIdForRepoCall, + ); + } case 'user': { final repo = context.read>(); @@ -454,6 +466,9 @@ Future _handleDelete( case 'country': final repo = context.read>(); itemToDelete = await repo.read(id: id, userId: userIdForRepoCall); + case 'language': + final repo = context.read>(); + itemToDelete = await repo.read(id: id, userId: userIdForRepoCall); case 'user': final repo = context.read>(); itemToDelete = await repo.read(id: id, userId: userIdForRepoCall); @@ -517,6 +532,11 @@ Future _handleDelete( id: id, userId: userIdForRepoCall, ); + case 'language': + await context.read>().delete( + id: id, + userId: userIdForRepoCall, + ); case 'user': await context.read>().delete( id: id,