Normalize protected read API responses

This commit is contained in:
lucast committed 2026-09-29 15:57:25 +02:00
1 parent a2b8dec813
commit f377424d3a
21 files changed
+42 -42

No files matched your search

+2 -2
View File
@@ -1,9 +1,9 @@
import { getRouterParam } from "h3"
import { Album } from "../../models/album"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
import { parseMongoId, validationResponse } from "../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,9 +1,9 @@
import { getQuery, getRouterParam } from "h3"
import { Track } from "../../../models/track"
import { requireAuthenticatedUser } from "../../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../../utils/auth"
import { parseMongoId, parseNumber, validationResponse } from "../../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,9 +1,9 @@
import { getQuery } from "h3"
import { Album } from "../../models/album"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
import { parseMongoIds, validationResponse } from "../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedIds = parseMongoIds(getQuery(event).ids)
+2 -2
View File
@@ -1,7 +1,7 @@
import { Album } from "../../models/album"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
return Album.find({}).populate("artists").populate("genre")
+2 -2
View File
@@ -1,7 +1,7 @@
import { Artist } from "../../models/artist"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
return Artist.find({})
+2 -2
View File
@@ -1,7 +1,7 @@
import { Genre } from "../../models/genre"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
return Genre.find({})
+2 -2
View File
@@ -1,7 +1,7 @@
import { Track } from "../../models/track"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
return Track.find({})
+2 -2
View File
@@ -1,9 +1,9 @@
import { getRouterParam } from "h3"
import { Artist } from "../../models/artist"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
import { parseMongoId, validationResponse } from "../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,9 +1,9 @@
import { getQuery, getRouterParam } from "h3"
import { Album } from "../../../models/album"
import { requireAuthenticatedUser } from "../../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../../utils/auth"
import { parseMongoId, parseNumber, validationResponse } from "../../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,9 +1,9 @@
import { getQuery, getRouterParam } from "h3"
import { Track } from "../../../models/track"
import { requireAuthenticatedUser } from "../../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../../utils/auth"
import { parseMongoId, parseNumber, validationResponse } from "../../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,9 +1,9 @@
import { getQuery } from "h3"
import { Artist } from "../../models/artist"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
import { parseMongoIds, validationResponse } from "../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedIds = parseMongoIds(getQuery(event).ids)
+2 -2
View File
@@ -1,9 +1,9 @@
import mongoose, { type PipelineStage } from "mongoose"
import { Album } from "../../../models/album"
import { parseMongoId, parseNumber, validationResponse } from "../../../utils/api-validation"
import { requireAuthenticatedUser } from "../../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const id = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,8 +1,8 @@
import { Genre } from "../../models/genre"
import { parseNumber, validationResponse } from "../../utils/api-validation"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const { limit: rawLimit } = getQuery(event)
+2 -2
View File
@@ -1,9 +1,9 @@
import mongoose, { type PipelineStage } from "mongoose"
import { Track } from "../../../models/track"
import { parseMongoId, parseNumber, validationResponse } from "../../../utils/api-validation"
import { requireAuthenticatedUser } from "../../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const id = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -7,11 +7,11 @@ import {
parseQueryString,
validationResponse,
} from "../utils/api-validation"
import { requireAuthenticatedUser } from "../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../utils/auth"
const searchTypes = ["track", "album", "artist", "default"] as const
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const query = getQuery(event)
+2 -2
View File
@@ -1,9 +1,9 @@
import { getQuery } from "h3"
import { Track } from "../models/track"
import { requireAuthenticatedUser } from "../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../utils/auth"
import { parseMongoIds, validationResponse } from "../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedIds = parseMongoIds(getQuery(event).ids)
+2 -2
View File
@@ -1,9 +1,9 @@
import { getRouterParam } from "h3"
import { Track } from "../../models/track"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
import { parseMongoId, validationResponse } from "../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,9 +1,9 @@
import { getRouterParam } from "h3"
import { Track } from "../../../models/track"
import { requireAuthenticatedUser } from "../../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../../utils/auth"
import { parseMongoId, validationResponse } from "../../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getRouterParam(event, "id"))
+2 -2
View File
@@ -1,5 +1,5 @@
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
return await requireAuthenticatedUser(event)
})
+2 -2
View File
@@ -1,8 +1,8 @@
import { User } from "../../models/user"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
import { setResponseStatus } from "h3"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
const authenticatedUser = await requireAuthenticatedUser(event)
const user = await User.findById(authenticatedUser._id).populate("savedTracks")
+2 -2
View File
@@ -1,10 +1,10 @@
import { getQuery, setResponseStatus } from "h3"
import mongoose, { type ObjectId } from "mongoose"
import { User } from "../../models/user"
import { requireAuthenticatedUser } from "../../utils/auth"
import { defineAuthenticatedEventHandler, requireAuthenticatedUser } from "../../utils/auth"
import { parseMongoId, validationResponse } from "../../utils/api-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
const authenticatedUser = await requireAuthenticatedUser(event)
const parsedId = parseMongoId(getQuery(event).id)
if ("error" in parsedId) return validationResponse(event, parsedId.error)