strapi-to-lokalise-plugin
Version:
Preview and sync Lokalise translations from Strapi admin
168 lines (161 loc) • 3.75 kB
JavaScript
'use strict';
// Strapi v4 + v5 Routes - Plain Array Format
// For v4: Strapi auto-loads from server/routes/admin.js
// For v5: We use server/routes/index.js instead
// This file serves as fallback/v4 compatibility
// Official docs: https://docs.strapi.io/dev-docs/plugins/server/policies
// Uses policies for authentication
const routes = [
{
method: 'GET',
path: '/settings',
handler: 'lokalise-sync.getSettings',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/settings',
handler: 'lokalise-sync.updateSettings',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/settings/test',
handler: 'lokalise-sync.testSettings',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'GET',
path: '/preview',
handler: 'lokalise-sync.preview',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/sync',
handler: 'lokalise-sync.syncSelection',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/sync/all',
handler: 'lokalise-sync.syncAll',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/renames',
handler: 'lokalise-sync.updateRenames',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/slugs',
handler: 'lokalise-sync.updateSlugs',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'GET',
path: '/jobs',
handler: 'lokalise-sync.listJobs',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'GET',
path: '/types',
handler: 'lokalise-sync.listTypes',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/jobs',
handler: 'lokalise-sync.startJob',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'GET',
path: '/jobs/:jobId',
handler: 'lokalise-sync.getJob',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/jobs/:jobId/selection',
handler: 'lokalise-sync.appendJobSelection',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/jobs/:jobId/finalize',
handler: 'lokalise-sync.finalizeJob',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/jobs/:jobId/cancel',
handler: 'lokalise-sync.cancelJob',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'DELETE',
path: '/jobs/:jobId',
handler: 'lokalise-sync.clearJob',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
{
method: 'POST',
path: '/jobs/:jobId/batches/:batchId/run',
handler: 'lokalise-sync.runBatch',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
},
];
// Dev-only route
if (process.env.NODE_ENV !== 'production') {
routes.push({
method: 'POST',
path: '/slugs/dev-override',
handler: 'lokalise-sync.updateSlugs',
config: {
policies: ['admin::isAuthenticatedAdmin'],
},
});
}
// Strapi v5 CORRECT Format: Export plain array (same as v4)
// CRITICAL FIX: Strapi v5 requires plugin server routes to be exported as a plain array
// NOT as a function returning { admin: { routes: [...] } }
// The function format is ONLY for admin panel (frontend) routing, not plugin API endpoints
module.exports = routes;