Autentikasi
Cookie + nonce untuk permintaan dari browser, Application Password untuk otomasi.
Di halaman ini
Editor GitDocs berjalan sebagai pengguna yang sedang masuk. WordPress memverifikasi nonce wp_rest pada setiap permintaan; tanpa nonce yang sah, permintaan dianggap datang dari pengunjung anonim dan seluruh pemeriksaan kapabilitas gagal.
// Cara termudah: apiFetch sudah menyertakan nonce secara otomatis.
const page = await wp.apiFetch( { path: '/gitdocs/v1/pages/42' } );
await wp.apiFetch( {
path: '/gitdocs/v1/pages/42',
method: 'POST',
data: { mode: 'save', markdown: '## Judul baru\n' },
} );Bila memakai fetch mentah, sertakan nonce sendiri:
await fetch( '/wp-json/gitdocs/v1/pages/42', {
method: 'POST',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': window.wpApiSettings.nonce,
},
body: JSON.stringify( { mode: 'save', markdown: '## Judul baru\n' } ),
} );Untuk skrip, CI, atau integrasi, buat Application Password di Pengguna β Profil.
curl
curl -u "nama_pengguna:xxxx xxxx xxxx xxxx xxxx xxxx" \
-H "Content-Type: application/json" \
-X POST https://situs.id/wp-json/gitdocs/v1/pages \
-d '{"title":"Halaman baru","markdown":"## Halo\n","space":2}'PHP
$response = wp_remote_post(
'https://situs.id/wp-json/gitdocs/v1/pages',
array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( 'nama_pengguna:' . $app_password ),
'Content-Type' => 'application/json',
),
'body' => wp_json_encode(
array(
'title' => 'Halaman baru',
'markdown' => "## Halo\n",
'space' => 2,
)
),
)
);Node.js
const auth = Buffer.from( `${ user }:${ appPassword }` ).toString( 'base64' );
const response = await fetch( 'https://situs.id/wp-json/gitdocs/v1/pages', {
method: 'POST',
headers: {
Authorization: `Basic ${ auth }`,
'Content-Type': 'application/json',
},
body: JSON.stringify( { title: 'Halaman baru', markdown: '## Halo\n', space: 2 } ),
} );Application Password setara dengan kata sandi akun untuk REST API. Simpan sebagai secret (variabel lingkungan atau brankas rahasia), jangan pernah dimasukkan ke dalam repositori, dan cabut segera bila bocor.
Halaman dokumentasi memakai kapabilitas bawaan WordPress untuk tulisan (edit_posts, publish_posts, delete_posts), sehingga peran standar berlaku apa adanya:
| Peran | Membuat | Menyunting milik sendiri | Menyunting milik orang lain | Menerbitkan | Mengelola space |
|---|---|---|---|---|---|
| Administrator | β | β | β | β | β |
| Editor | β | β | β | β | β |
| Penulis | β | β | β | β | β |
| Kontributor | β | β (draf) | β | β | β |
Kontributor yang menekan Terbitkan akan mengirim halaman berstatus Menunggu tinjauan.
Pengguna tanpa kapabilitas unfiltered_html tetap dapat menulis Markdown apa pun: HTML hasil render disanitasi dengan kses, sama seperti konten WordPress lainnya. Komponen GitDocs dirancang agar tetap utuh setelah sanitasi.