mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Error message on Duplicate Document
Summary: Fixing error message when user can't copy document. Test Plan: Updated tests Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3130
This commit is contained in:
parent
267640c277
commit
96fa7ad562
@ -304,6 +304,7 @@ export class Notifier extends Disposable implements INotifier {
|
|||||||
// This is exposed primarily for tests.
|
// This is exposed primarily for tests.
|
||||||
public clearAppErrors() {
|
public clearAppErrors() {
|
||||||
this._appErrorList.splice(0);
|
this._appErrorList.splice(0);
|
||||||
|
this._appErrorToast.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -154,9 +154,18 @@ class SaveCopyModal extends Disposable {
|
|||||||
const org = this._destOrg.get();
|
const org = this._destOrg.get();
|
||||||
const docWorker = await api.getWorkerAPI('import');
|
const docWorker = await api.getWorkerAPI('import');
|
||||||
const destName = this._destName.get() + '.grist';
|
const destName = this._destName.get() + '.grist';
|
||||||
|
try {
|
||||||
const uploadId = await docWorker.copyDoc(this._doc.id, this._asTemplate.get(), destName);
|
const uploadId = await docWorker.copyDoc(this._doc.id, this._asTemplate.get(), destName);
|
||||||
const {id} = await docWorker.importDocToWorkspace(uploadId, ws.id);
|
const {id} = await docWorker.importDocToWorkspace(uploadId, ws.id);
|
||||||
await urlState().pushUrl({org: org?.domain || undefined, doc: id, docPage: urlState().state.get().docPage});
|
await urlState().pushUrl({org: org?.domain || undefined, doc: id, docPage: urlState().state.get().docPage});
|
||||||
|
} catch(err) {
|
||||||
|
// Convert access denied errors to normal Error to make it consistent with other endpoints.
|
||||||
|
// TODO: Should not allow to click this button when user doesn't have permissions.
|
||||||
|
if (err.status === 403) {
|
||||||
|
throw new Error(err.details.userError || err.message);
|
||||||
|
}
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public buildDom() {
|
public buildDom() {
|
||||||
|
@ -342,7 +342,7 @@ export class DocWorkerApi {
|
|||||||
// check if the user has download permissions.
|
// check if the user has download permissions.
|
||||||
const activeDoc = await this._getActiveDoc(req);
|
const activeDoc = await this._getActiveDoc(req);
|
||||||
if (!await activeDoc.canDownload(docSessionFromRequest(req))) {
|
if (!await activeDoc.canDownload(docSessionFromRequest(req))) {
|
||||||
throw new Error('not authorized to download this document');
|
throw new ApiError('not authorized to download this document', 403);
|
||||||
}
|
}
|
||||||
return this._docWorker.downloadDoc(req, res, this._docManager.storageManager);
|
return this._docWorker.downloadDoc(req, res, this._docManager.storageManager);
|
||||||
}
|
}
|
||||||
|
@ -67,12 +67,20 @@ export function addUploadRoute(server: GristServer, expressApp: Application, ...
|
|||||||
const name = optStringParam(req.query.name);
|
const name = optStringParam(req.query.name);
|
||||||
if (!docId) { throw new Error('doc must be specified'); }
|
if (!docId) { throw new Error('doc must be specified'); }
|
||||||
const accessId = makeAccessId(req, getAuthorizedUserId(req));
|
const accessId = makeAccessId(req, getAuthorizedUserId(req));
|
||||||
|
try {
|
||||||
const uploadResult: UploadResult = await fetchDoc(server.getHomeUrl(req), docId, req, accessId,
|
const uploadResult: UploadResult = await fetchDoc(server.getHomeUrl(req), docId, req, accessId,
|
||||||
req.query.template === '1');
|
req.query.template === '1');
|
||||||
if (name) {
|
if (name) {
|
||||||
globalUploadSet.changeUploadName(uploadResult.uploadId, accessId, name);
|
globalUploadSet.changeUploadName(uploadResult.uploadId, accessId, name);
|
||||||
}
|
}
|
||||||
res.status(200).send(JSON.stringify(uploadResult));
|
res.status(200).send(JSON.stringify(uploadResult));
|
||||||
|
} catch(err) {
|
||||||
|
if ((err as ApiError).status === 403) {
|
||||||
|
res.status(403).json({error:'Insufficient access to document to copy it entirely'});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user