@websolutespa/payload-plugin-bowl-llm
Version:
LLM plugin for Bowl PayloadCms plugin
109 lines (108 loc) • 3.29 kB
JavaScript
import { ResponseSuccess } from '@websolutespa/payload-utils/server';
import { options } from '../options';
import { errorHandler } from './error.handler';
export const appHandler = async (req)=>{
const { payload } = req;
if (!payload) {
throw {
status: 500,
message: 'Server Error: Cannot resolve payload'
};
}
const { query } = req;
if (!query) {
throw {
status: 400,
message: 'Bad Request: locale is missing'
};
}
const { locale } = query;
if (!locale) {
throw {
status: 400,
message: 'Bad Request: locale is missing'
};
}
if (!(typeof req.data === 'object')) {
throw {
status: 400,
message: 'Bad Request: request body is missing or invalid'
};
}
const { appKey, apiKey, preview } = req.data;
if (!appKey) {
throw {
status: 401,
message: 'Unauthorized: appKey is missing'
};
}
if (!apiKey) {
throw {
status: 401,
message: 'Unauthorized: apiKey is missing'
};
}
const defaultLocale = payload.config.localization ? payload.config.localization.defaultLocale : 'en';
const response = await payload.find({
collection: options.slug.llmApp,
where: {
'settings.credentials.appKey': {
equals: appKey
},
'settings.credentials.apiKey': {
equals: apiKey
},
...preview ? {
'settings.credentials.previewEnabled': {
equals: true
}
} : {
isActive: {
equals: true
}
}
},
depth: 3,
locale: locale,
fallbackLocale: defaultLocale,
showHiddenFields: true,
pagination: false,
overrideAccess: true
});
if (!response.docs.length) {
throw {
status: 404,
message: 'Not Found: application not found'
};
}
const app = response.docs[0];
const referrer = req.headers.get('referer') || req.headers.get('referer') || '';
const isReferrefAllowed = !referrer || app.settings.credentials.httpReferrers.reduce((p, c)=>{
return p || referrer.indexOf(c.referrer) !== -1;
}, false);
if (!isReferrefAllowed) {
// referrer http://localhost:4000/bowl/admin/llm-test
console.log('referrer', `[${referrer}]`, app.settings.credentials.httpReferrers);
throw {
status: 401,
message: `Unauthorized: referrer is not allowed [${referrer}]`
};
}
return app;
};
export const llmAppsHandler = async (req)=>{
try {
const { payload } = req;
// get all the llmApps (both enabled and disabled) associated with the current user
const response = await payload.find({
collection: options.slug.llmApp,
pagination: false,
req: req,
overrideAccess: false
});
return ResponseSuccess(response.docs);
} catch (error) {
return errorHandler(error);
}
};
//# sourceMappingURL=app.handler.js.map