mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) implement authorization via query parameter
Summary: This adds any parameters in a document url whose key ends in '_' into a `user.Link` object available in access control formulas and in setting up characteristic tables. This allows, for example, sending links to a document that contain a hard-to-guess token, and having that link grant access to a controlled part of the document (invoices for a specific customer for example). A `user.Origin` field is also added, set during rest api calls, but is only tested manually at this point. It could be elaborated for embedding use-cases. Test Plan: added test Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2680
This commit is contained in:
@@ -267,8 +267,9 @@ export class Comm extends dispose.Disposable implements GristServerAPI, DocListA
|
||||
* committed to a document that is called in hosted Grist - all other methods
|
||||
* are called via DocComm.
|
||||
*/
|
||||
public async openDoc(docName: string, mode?: string): Promise<OpenLocalDocResult> {
|
||||
return this._makeRequest(null, docName, 'openDoc', docName, mode);
|
||||
public async openDoc(docName: string, mode?: string,
|
||||
linkParameters?: Record<string, string>): Promise<OpenLocalDocResult> {
|
||||
return this._makeRequest(null, docName, 'openDoc', docName, mode, linkParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -189,6 +189,7 @@ export class DocComm extends Disposable implements ActiveDocAPI {
|
||||
private async _doForkDoc(): Promise<void> {
|
||||
reportError(new UserError('Preparing your copy...', {key: 'forking'}));
|
||||
const {urlId, docId} = await this.fork();
|
||||
// TODO: may want to preserve linkParameters in call to openDoc.
|
||||
const openResponse = await this._comm.openDoc(docId);
|
||||
// Close the old doc and release the old connection. Note that the closeDoc call is expected
|
||||
// to fail, since we close the websocket immediately after it. So let it fail silently.
|
||||
|
||||
Reference in New Issue
Block a user