ForgeCMS
fr

CMS

L’API d’administration du CMS de Total.js : gérer un site depuis le code, sauvegarde et restauration

CMS · cms@8071e48 cmsapiadminbackuprestorepermissions

Tout ce que fait l’interface d’administration passe par un seul point d’entrée : POST /admin/ avec le corps { "schema": "<name>", "data": { ... } } (les routes API de Total.js, voir routes API). L’adresse vient de la ligne $api : /admin/ du fichier config. Authentifiez-vous avec le cookie de session (POST /admin/ avec schema: "login" et le login et le password), avec l’en-tête x-token ou via OpenPlatform (installation et premier démarrage).

Les actions

PluginAppels (schema)Permission
Accountlogin, logout, admin_read, admin_save (nom, login, mot de passe), accountla session
Pagespages_list, pages_read, pages_save, pages_clone, pages_remove, pages_links, pages_html (lit le HTML), pages_save_html (id, html, jusqu’à 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, et les envois ci-dessousfiles
Settingssettings_read, settings_save, settings_test (essaie les réglages SMTP), chatgptsettings
Dashboarddashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_statsaucune

La permission admin (et tout utilisateur avec le drapeau sa, y compris le Bot du jeton) a accès à tous les appels. Un appel sans permission reçoit une erreur, et login est le seul appel qui n’a pas besoin de session.

Créer une page et son contenu :

{ "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 répond { "success": true } ; lisez l’id avec pages_list. Pour un layout, layouts_save répond l’id du layout dans value. Quand un champ manque dans une mise à jour, le champ est vidé (un title que vous n’envoyez pas est enregistré vide), envoyez donc l’enregistrement complet.

Envoyer des fichiers

POST /admin/upload/ accepte un envoi multipart (jusqu’à 10 Mo) et POST /admin/upload/base64/ un corps JSON avec un data URI (png, jpeg ou gif). Les deux répondent une liste de { id, name, type, ext, size, url }, où url vaut /download/<id>.<ext>.

Sauvegarde, restauration et effacement

Trois routes de controllers/api.js agissent sur tout le site et exigent la permission admin :

RouteCe qu’elle fait
GET /admin/backup/télécharge tout le stockage de fichiers (métadonnées, HTML des pages et des layouts, fichiers et articles) sous la forme d’un fichier texte nommé d’après le site et la date
POST /admin/restore/envoie un tel fichier (jusqu’à 100 Mo) et le charge.
GET /admin/clear/supprime le contenu du site. Il abandonne le stockage de fichiers et le recharge, de sorte que pages, layouts, widgets et le reste sont supprimé

Faites une sauvegarde avant d’essayer l’une d’elles, n’ouvrez jamais /admin/clear/ dans un navigateur par curiosité et gardez le jeton privé : avec lui, un seul GET vide le site.