feat(admin): hide compose settings and API keys from non-superusers
This commit is contained in:
parent
239e95c462
commit
529a9573b2
1 changed files with 30 additions and 1 deletions
|
|
@ -82,12 +82,14 @@ import { CustomMinefieldScores } from "@/collections/minigames/CustomMinefieldSc
|
||||||
import { CustomRadioTests } from "@/collections/minigames/CustomRadioTests";
|
import { CustomRadioTests } from "@/collections/minigames/CustomRadioTests";
|
||||||
import { CustomRadioTestScores } from "@/collections/minigames/CustomRadioTestScores";
|
import { CustomRadioTestScores } from "@/collections/minigames/CustomRadioTestScores";
|
||||||
import { RibbonSubmissions } from "@/collections/users/RibbonSubmissions";
|
import { RibbonSubmissions } from "@/collections/users/RibbonSubmissions";
|
||||||
|
import hasRoles from "@/utils/access-control/hasRoles";
|
||||||
import { scopedAdminPageAccess } from "@/utils/access-control/divisionAccess";
|
import { scopedAdminPageAccess } from "@/utils/access-control/divisionAccess";
|
||||||
import { payloadAiPlugin, PayloadAiPluginLexicalEditorFeature } from "@ai-stack/payloadcms";
|
import { payloadAiPlugin, PayloadAiPluginLexicalEditorFeature } from "@ai-stack/payloadcms";
|
||||||
import type { SeedPromptFunction } from "@ai-stack/payloadcms/types";
|
import type { SeedPromptFunction } from "@ai-stack/payloadcms/types";
|
||||||
import { mcpPlugin } from "@payloadcms/plugin-mcp";
|
import { mcpPlugin } from "@payloadcms/plugin-mcp";
|
||||||
import { createOpenAI } from "@ai-sdk/openai";
|
import { createOpenAI } from "@ai-sdk/openai";
|
||||||
import { createTextStreamResponse, jsonSchema, streamObject } from "ai";
|
import { createTextStreamResponse, jsonSchema, streamObject } from "ai";
|
||||||
|
import type { User } from "@/payload-types";
|
||||||
|
|
||||||
const unslothProvider = createOpenAI({
|
const unslothProvider = createOpenAI({
|
||||||
apiKey: process.env.UNSLOTH_API_KEY,
|
apiKey: process.env.UNSLOTH_API_KEY,
|
||||||
|
|
@ -449,7 +451,23 @@ export default buildConfig({
|
||||||
plugins: [
|
plugins: [
|
||||||
// payloadCloudPlugin(),
|
// payloadCloudPlugin(),
|
||||||
// storage-adapter-placeholder
|
// storage-adapter-placeholder
|
||||||
mcpPlugin({ collections: mcpCollections }),
|
mcpPlugin({
|
||||||
|
collections: mcpCollections,
|
||||||
|
overrideApiKeyCollection: (collection) => ({
|
||||||
|
...collection,
|
||||||
|
admin: {
|
||||||
|
...collection.admin,
|
||||||
|
hidden: ({ user }) => !hasRoles(["admin", "developer"], user as User),
|
||||||
|
},
|
||||||
|
access: {
|
||||||
|
...collection.access,
|
||||||
|
read: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
update: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
create: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
delete: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}),
|
||||||
payloadAiPlugin({
|
payloadAiPlugin({
|
||||||
seedPrompts: aiFieldSeedPrompts,
|
seedPrompts: aiFieldSeedPrompts,
|
||||||
collections: {
|
collections: {
|
||||||
|
|
@ -515,6 +533,17 @@ export default buildConfig({
|
||||||
[Labels.slug]: true,
|
[Labels.slug]: true,
|
||||||
},
|
},
|
||||||
debugging: true,
|
debugging: true,
|
||||||
|
overrideInstructions: {
|
||||||
|
admin: {
|
||||||
|
hidden: ({ user }) => !hasRoles(["admin", "developer"], user as User),
|
||||||
|
},
|
||||||
|
access: {
|
||||||
|
read: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
update: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
create: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
delete: ({ req }) => hasRoles(["admin", "developer"], req.user as User),
|
||||||
|
},
|
||||||
|
},
|
||||||
generationModels: [
|
generationModels: [
|
||||||
{
|
{
|
||||||
id: "unsloth-text",
|
id: "unsloth-text",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue