Fix video controller permissions

This commit is contained in:
Zoe Roux 2025-11-03 12:27:30 +01:00
parent c1b243df9c
commit 572ddc69ad
No known key found for this signature in database
3 changed files with 16 additions and 8 deletions

View File

@ -54,7 +54,7 @@ PROTECTED_CLAIMS="permissions,verified"
# Replace $YOURNAME with the name of the key you want (only alpha are valid) # Replace $YOURNAME with the name of the key you want (only alpha are valid)
# The value will be the apikey (max 128 bytes) # The value will be the apikey (max 128 bytes)
KEIBI_APIKEY_SCANNER=EJqUB8robwKwLNt37SuHqdcsNGrtwpfYxeExfiAbokpxZVd4WctWr7gnSZ KEIBI_APIKEY_SCANNER=EJqUB8robwKwLNt37SuHqdcsNGrtwpfYxeExfiAbokpxZVd4WctWr7gnSZ
KEIBI_APIKEY_SCANNER_CLAIMS='{"permissions": ["core.write"]}' KEIBI_APIKEY_SCANNER_CLAIMS='{"permissions": ["core.read", "core.write"]}'
# To debug the front end, you can set the following to an external backend # To debug the front end, you can set the following to an external backend
KYOO_URL= KYOO_URL=

View File

@ -13,8 +13,8 @@ import { series } from "./controllers/shows/series";
import { showsH } from "./controllers/shows/shows"; import { showsH } from "./controllers/shows/shows";
import { staffH } from "./controllers/staff"; import { staffH } from "./controllers/staff";
import { studiosH } from "./controllers/studios"; import { studiosH } from "./controllers/studios";
import { videosH } from "./controllers/videos"; import { videosReadH, videosWriteH } from "./controllers/videos";
import type { KError } from "./models/error"; import { KError } from "./models/error";
export const base = new Elysia({ name: "base" }) export const base = new Elysia({ name: "base" })
.onError(({ code, error }) => { .onError(({ code, error }) => {
@ -90,7 +90,8 @@ export const handlers = new Elysia({ prefix })
.use(imagesH) .use(imagesH)
.use(watchlistH) .use(watchlistH)
.use(historyH) .use(historyH)
.use(nextup), .use(nextup)
.use(videosReadH),
) )
.guard( .guard(
{ {
@ -104,5 +105,5 @@ export const handlers = new Elysia({ prefix })
// }, // },
permissions: ["core.write"], permissions: ["core.write"],
}, },
(app) => app.use(videosH).use(seed), (app) => app.use(videosWriteH).use(seed),
); );

View File

@ -439,10 +439,9 @@ function getNextVideoEntry({
.as("next"); .as("next");
} }
export const videosH = new Elysia({ prefix: "/videos", tags: ["videos"] }) export const videosReadH = new Elysia({ prefix: "/videos", tags: ["videos"] })
.model({ .model({
video: Video, video: Video,
"created-videos": t.Array(CreatedVideo),
error: t.Object({}), error: t.Object({}),
}) })
.use(auth) .use(auth)
@ -483,7 +482,7 @@ export const videosH = new Elysia({ prefix: "/videos", tags: ["videos"] })
message: `No video found with id or slug '${id}'`, message: `No video found with id or slug '${id}'`,
}); });
} }
return video; return video as any;
}, },
{ {
detail: { detail: {
@ -806,6 +805,14 @@ export const videosH = new Elysia({ prefix: "/videos", tags: ["videos"] })
}, },
}, },
) )
export const videosWriteH = new Elysia({ prefix: "/videos", tags: ["videos"] })
.model({
video: Video,
"created-videos": t.Array(CreatedVideo),
error: t.Object({}),
})
.use(auth)
.post( .post(
"", "",
async ({ body, status }) => { async ({ body, status }) => {