📝 doc: bit of documentation about the editing session key system for plugins (#525)
This commit is contained in:
@@ -133,6 +133,36 @@ When a user requests a preview and then possibly to edit the file, an IFrame is
|
|||||||
|
|
||||||
In the case of the OnlyOffice application, these URLs are pointing to the connector plugin, which then proxies back and forth with the OnlyOffice document server.
|
In the case of the OnlyOffice application, these URLs are pointing to the connector plugin, which then proxies back and forth with the OnlyOffice document server.
|
||||||
|
|
||||||
|
#### Editing session key
|
||||||
|
|
||||||
|
When editing a file, at first, a new session key is created on the file by the
|
||||||
|
backend and atomically swapped.
|
||||||
|
|
||||||
|
This session key uniquely identifies the user, company, and plugin and it is not encrypted.
|
||||||
|
|
||||||
|
An editing session key prevents others from starting, can be updated with new versions, and
|
||||||
|
ended with and without a new version.
|
||||||
|
|
||||||
|
See operations `beginEditing` and `updateEditing` in `tdrive/backend/node/src/services/documents/services/index.ts` for operations available on that key.
|
||||||
|
|
||||||
|
#### API to expose by the application
|
||||||
|
|
||||||
|
Authentication from the Twake Drive backend is a JWT with the property `type` being
|
||||||
|
`"tdriveToApplication"` and signed with the shared secret. The application must accept
|
||||||
|
multiple parallel requests for the same key gracefully.
|
||||||
|
|
||||||
|
- `POST /tdriveApi/1/session/${editing_session_key}/check`
|
||||||
|
|
||||||
|
Sent by Twake Drive backend when beginning a new editing session or investigating
|
||||||
|
stored keys. The application is expected to process the key if possible before responding,
|
||||||
|
and provide a response in JSON. The `error` key of that body should be truthy if the response
|
||||||
|
is not known. Otherwise it should respond:
|
||||||
|
|
||||||
|
- `{ status: 'unknown' }`: the key isn't known and maybe used for a new session
|
||||||
|
- `{ status: 'updated' }`: the key needed updating but is now invalid
|
||||||
|
- `{ status: 'expired' }`: the key was already used in a finished session and can't be used again
|
||||||
|
- `{ status: 'live' }`: the key is valid and current and should be used again for the same file
|
||||||
|
|
||||||
### Example: OnlyOffice plugin
|
### Example: OnlyOffice plugin
|
||||||
|
|
||||||
The [OnlyOffice connector plugin](https://github.com/linagora/twake-drive/tree/main/tdrive/connectors/onlyoffice-connector) is an example of plugin. It's readme includes an example configuration for the backend.
|
The [OnlyOffice connector plugin](https://github.com/linagora/twake-drive/tree/main/tdrive/connectors/onlyoffice-connector) is an example of plugin. It's readme includes an example configuration for the backend.
|
||||||
|
|||||||
Reference in New Issue
Block a user