From 302eba0d898e38dca14739486441c27c0be6c62f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Apr 2021 10:55:28 +0200 Subject: Add data directory for plugins and some helpers --- support/doc/plugins/guide.md | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'support') diff --git a/support/doc/plugins/guide.md b/support/doc/plugins/guide.md index 5b5a3065d..36ade117b 100644 --- a/support/doc/plugins/guide.md +++ b/support/doc/plugins/guide.md @@ -195,12 +195,30 @@ Plugins can store/load JSON data, that PeerTube will store in its database (so d Example: ```js -function register (...) { +function register ({ + storageManager +}) { const value = await storageManager.getData('mykey') await storageManager.storeData('mykey', { subkey: 'value' }) } ``` +You can also store files in the plugin data directory (`/{plugins-directory}/data/{npm-plugin-name}`). +This directory and its content won't be deleted when your plugin is uninstalled/upgraded. + +```js +function register ({ + storageManager, + peertubeHelpers +}) { + const basePath = peertubeHelpers.plugin.getDataDirectoryPath() + + fs.writeFile(path.join(basePath, 'filename.txt'), 'content of my file', function (err) { + ... + }) +} +``` + #### Update video constants You can add/delete video categories, licences or languages using the appropriate managers: @@ -226,9 +244,27 @@ function register (...) { You can create custom routes using an [express Router](https://expressjs.com/en/4x/api.html#router) for your plugin: ```js -function register (...) { +function register ({ + router +}) { const router = getRouter() router.get('/ping', (req, res) => res.json({ message: 'pong' })) + + // Users are automatically authenticated + router.get('/auth', (res, res) => { + const user = peertubeHelpers.user.getAuthUser(res) + + const isAdmin = user.role === 0 + const isModerator = user.role === 1 + const isUser = user.role === 2 + + res.json({ + username: user.username, + isAdmin, + isModerator, + isUser + }) + }) } ``` -- cgit v1.2.3