ForgeCMS
it

CMS

L’API dell’admin del CMS di Total.js: gestire un sito da codice, backup e ripristino

CMS · cms@8071e48 cmsapiadminbackuprestorepermissions

Tutto ciò che fa l’interfaccia dell’admin passa da un unico endpoint: POST /admin/ con il corpo { "schema": "<name>", "data": { ... } } (le route API di Total.js, vedi route API). L’indirizzo viene dalla riga $api : /admin/ del file config. Autenticati con il cookie di sessione (POST /admin/ con schema: "login" e login e password), con l’intestazione x-token o tramite OpenPlatform (installazione e primo avvio).

Le azioni

PluginChiamate (schema)Permesso
Accountlogin, logout, admin_read, admin_save (nome, login, password), accountla sessione
Pagespages_list, pages_read, pages_save, pages_clone, pages_remove, pages_links, pages_html (legge l’HTML), pages_save_html (id, html, fino a 5 MB), pages_copy (from, to)pages
Layoutslayouts_list, layouts_read, layouts_save, layouts_clone, layouts_remove, layouts_html, layouts_save_html, layouts_importlayouts
Widgetswidgets_list, widgets_read, widgets_save, widgets_remove, widgets_detailwidgets
Navigationnav_list, nav_read, nav_save, nav_remove, nav_editornavigation
Redirectsredirects_list, redirects_read, redirects_save (url, target, permanent), redirects_removeredirects
Variablesvariables_read, variables_save (vars)variables
Postsposts, posts_read, posts_create, posts_update, posts_remove, posts_clear, posts_categoriesposts
Filesfiles_list, files_rename, files_clear, files_remove, e i caricamenti qui sottofiles
Settingssettings_read, settings_save, settings_test (prova le impostazioni SMTP), chatgptsettings
Dashboarddashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_statsnessuno

Il permesso admin (e ogni utente con il flag sa, incluso il Bot del token) può usarle tutte. Una chiamata senza permesso riceve un errore, e login è l’unica chiamata che non richiede una sessione.

Crea una pagina e il suo contenuto:

{ "schema": "pages_save", "data": { "name": "About", "layoutid": "<layout id>", "url": "/about/", "title": "About us" } }
{ "schema": "pages_save_html", "data": { "id": "<page id>", "html": "<h1>About us</h1>" } }

pages_save risponde { "success": true }; leggi l’id con pages_list. Per un layout, layouts_save risponde con l’id del layout in value. Quando in un aggiornamento manca un campo, il campo viene svuotato (un title che non invii viene salvato vuoto), quindi invia il record completo.

Caricare file

POST /admin/upload/ accetta un caricamento multipart (fino a 10 MB) e POST /admin/upload/base64/ un corpo JSON con un data URI (png, jpeg o gif). Entrambi rispondono con un elenco di { id, name, type, ext, size, url }, dove url è /download/<id>.<ext>.

Backup, ripristino e svuotamento

Tre route di controllers/api.js agiscono sull’intero sito e richiedono il permesso admin:

RouteCosa fa
GET /admin/backup/scarica tutto l’archivio di file (metadati, HTML di pagine e layout, file e post) come un unico file di testo con il nome del sito e la data
POST /admin/restore/carica un file così (fino a 100 MB) e lo carica nel sito.
GET /admin/clear/elimina il contenuto del sito. Scarta l’archivio di file e lo ricarica, quindi pagine, layout, widget e il resto vengono rimoss

Fai un backup prima di provarne una qualsiasi, non aprire mai /admin/clear/ in un browser per curiosità e tieni privato il token: con quello, un solo GET svuota il sito.