diff --git a/src/modules/cards/application/useCases/queries/GetUrlCardViewUseCase.ts b/src/modules/cards/application/useCases/queries/GetUrlCardViewUseCase.ts index 97e771b1..64e972d2 100644 --- a/src/modules/cards/application/useCases/queries/GetUrlCardViewUseCase.ts +++ b/src/modules/cards/application/useCases/queries/GetUrlCardViewUseCase.ts @@ -10,6 +10,7 @@ import { IProfileService } from '../../../domain/services/IProfileService'; export interface GetUrlCardViewQuery { cardId: string; + callerDid?: string; } // Enriched data for the final use case result @@ -65,7 +66,7 @@ export class GetUrlCardViewUseCase // Get profiles for all users in libraries const userIds = cardView.libraries.map((lib) => lib.userId); const profilePromises = userIds.map((userId) => - this.profileService.getProfile(userId), + this.profileService.getProfile(userId, query.callerDid), ); const profileResults = await Promise.all(profilePromises); diff --git a/src/modules/cards/infrastructure/http/controllers/GetUrlCardViewController.ts b/src/modules/cards/infrastructure/http/controllers/GetUrlCardViewController.ts index 6d865fae..df5712bd 100644 --- a/src/modules/cards/infrastructure/http/controllers/GetUrlCardViewController.ts +++ b/src/modules/cards/infrastructure/http/controllers/GetUrlCardViewController.ts @@ -11,12 +11,16 @@ export class GetUrlCardViewController extends Controller { async executeImpl(req: AuthenticatedRequest, res: Response): Promise { try { const { cardId } = req.params; + const callerDid = req.did; if (!cardId) { return this.badRequest(res, 'Card ID is required'); } - const result = await this.getUrlCardViewUseCase.execute({ cardId }); + const result = await this.getUrlCardViewUseCase.execute({ + cardId, + callerDid + }); if (result.isErr()) { return this.fail(res, result.error as any); diff --git a/src/modules/cards/infrastructure/http/routes/cardRoutes.ts b/src/modules/cards/infrastructure/http/routes/cardRoutes.ts index deb075f4..38e16178 100644 --- a/src/modules/cards/infrastructure/http/routes/cardRoutes.ts +++ b/src/modules/cards/infrastructure/http/routes/cardRoutes.ts @@ -26,57 +26,66 @@ export function createCardRoutes( ): Router { const router = Router(); - // Apply authentication middleware to all card routes - router.use(authMiddleware.ensureAuthenticated()); - // Query routes // GET /api/cards/metadata - Get URL metadata - router.get('/metadata', (req, res) => + router.get('/metadata', authMiddleware.optionalAuth(), (req, res) => getUrlMetadataController.execute(req, res), ); // GET /api/cards/my - Get my URL cards - router.get('/my', (req, res) => getMyUrlCardsController.execute(req, res)); + router.get('/my', authMiddleware.ensureAuthenticated(), (req, res) => + getMyUrlCardsController.execute(req, res), + ); // GET /api/cards/:cardId - Get URL card view - router.get('/:cardId', (req, res) => + router.get('/:cardId', authMiddleware.optionalAuth(), (req, res) => getUrlCardViewController.execute(req, res), ); // GET /api/cards/:cardId/libraries - Get libraries for card - router.get('/:cardId/libraries', (req, res) => + router.get('/:cardId/libraries', authMiddleware.optionalAuth(), (req, res) => getLibrariesForCardController.execute(req, res), ); // Command routes // POST /api/cards/library/urls - Add URL to library (with optional note and collections) - router.post('/library/urls', (req, res) => - addUrlToLibraryController.execute(req, res), + router.post( + '/library/urls', + authMiddleware.ensureAuthenticated(), + (req, res) => addUrlToLibraryController.execute(req, res), ); // POST /api/cards/library - Add existing card to library - router.post('/library', (req, res) => + router.post('/library', authMiddleware.ensureAuthenticated(), (req, res) => addCardToLibraryController.execute(req, res), ); // POST /api/cards/collections - Add card to collections - router.post('/collections', (req, res) => - addCardToCollectionController.execute(req, res), + router.post( + '/collections', + authMiddleware.ensureAuthenticated(), + (req, res) => addCardToCollectionController.execute(req, res), ); // PUT /api/cards/:cardId/note - Update note card content - router.put('/:cardId/note', (req, res) => - updateNoteCardController.execute(req, res), + router.put( + '/:cardId/note', + authMiddleware.ensureAuthenticated(), + (req, res) => updateNoteCardController.execute(req, res), ); // DELETE /api/cards/:cardId/library - Remove card from user's library - router.delete('/:cardId/library', (req, res) => - removeCardFromLibraryController.execute(req, res), + router.delete( + '/:cardId/library', + authMiddleware.ensureAuthenticated(), + (req, res) => removeCardFromLibraryController.execute(req, res), ); // DELETE /api/cards/:cardId/collections - Remove card from specified collections - router.delete('/:cardId/collections', (req, res) => - removeCardFromCollectionController.execute(req, res), + router.delete( + '/:cardId/collections', + authMiddleware.ensureAuthenticated(), + (req, res) => removeCardFromCollectionController.execute(req, res), ); return router;