mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Add initial tutorials implementation
Summary: Documents can now be flagged as tutorials, which causes them to display Markdown-formatted slides from a special GristDocTutorial table. Tutorial documents are forked on open, and remember the last slide a user was on. They can be restarted too, which prepares a new fork of the tutorial. Test Plan: Browser tests. Reviewers: jarek Reviewed By: jarek Differential Revision: https://phab.getgrist.com/D3813
This commit is contained in:
@@ -231,8 +231,12 @@ export function attachAppEndpoint(options: AttachOptions): void {
|
||||
// Query DB for the doc metadata, to include in the page (as a pre-fetch of getDoc() call),
|
||||
// and to get fresh (uncached) access info.
|
||||
doc = await dbManager.getDoc({userId, org: mreq.org, urlId});
|
||||
const slug = getSlugIfNeeded(doc);
|
||||
if (isAnonymousUser(mreq) && doc.type === 'tutorial') {
|
||||
// Tutorials require users to be signed in.
|
||||
throw new ApiError('You must be signed in to access a tutorial.', 403);
|
||||
}
|
||||
|
||||
const slug = getSlugIfNeeded(doc);
|
||||
const slugMismatch = (req.params.slug || null) !== (slug || null);
|
||||
const preferredUrlId = doc.urlId || doc.id;
|
||||
if (urlId !== preferredUrlId || slugMismatch) {
|
||||
@@ -263,8 +267,8 @@ export function attachAppEndpoint(options: AttachOptions): void {
|
||||
// First check if anonymous user has access to this org. If so, we don't propose
|
||||
// that they log in. This is the same check made in redirectToLogin() middleware.
|
||||
const result = await dbManager.getOrg({userId: getUserId(mreq)}, mreq.org || null);
|
||||
if (result.status !== 200) {
|
||||
// Anonymous user does not have any access to this org, or to this doc.
|
||||
if (result.status !== 200 || doc?.type === 'tutorial') {
|
||||
// Anonymous user does not have any access to this org, doc, or tutorial.
|
||||
// Redirect to log in.
|
||||
return forceLogin(req, res, next);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user