Files
bookorbit/server/src/modules/catalog/catalog.controller.ts
T
neon 26712eb02a security(metadata): scope catalog suggestions to visible books (#1366)
Derive catalog typeahead values only from books in libraries the requester can access, and enforce their content filters. Preserve superuser visibility, exact-match ranking, and user-scoped collection lookup.
2026-09-10 11:59:24 -06:00

52 lines
1.8 KiB
TypeScript

import { Controller, Get, Query } from '@nestjs/common';
import { CurrentUser } from '../../common/decorators/current-user.decorator';
import type { RequestUser } from '../../common/types/request-user';
import { SearchCatalogQueryDto } from './dto/search-catalog-query.dto';
import { CatalogService } from './catalog.service';
@Controller('metadata')
export class CatalogController {
constructor(private readonly catalogService: CatalogService) {}
@Get('authors')
searchAuthors(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchAuthors(user, query.q);
}
@Get('genres')
searchGenres(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchGenres(user, query.q);
}
@Get('tags')
searchTags(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchTags(user, query.q);
}
@Get('narrators')
searchNarrators(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchNarrators(user, query.q);
}
@Get('publishers')
searchPublishers(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchPublishers(user, query.q);
}
@Get('series')
searchSeries(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchSeries(user, query.q);
}
@Get('languages')
searchLanguages(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchLanguages(user, query.q);
}
@Get('collections')
searchCollections(@CurrentUser() user: RequestUser, @Query() query: SearchCatalogQueryDto) {
return this.catalogService.searchCollections(user.id, query.q);
}
}