Move template management to settings (#5811)

This commit is contained in:
Tom Moor
2023-09-10 15:46:12 -04:00
committed by GitHub
parent ac068c0c07
commit 0856f5f6ae
32 changed files with 432 additions and 267 deletions

View File

@@ -6,6 +6,7 @@ type Props = {
id?: string;
urlId?: string;
title: string;
emoji?: string;
text?: string;
state?: Buffer;
publish?: boolean;
@@ -28,6 +29,7 @@ type Props = {
export default async function documentCreator({
title = "",
text = "",
emoji,
state,
id,
urlId,
@@ -81,6 +83,7 @@ export default async function documentCreator({
fullWidth,
publishedAt,
importId,
emoji: templateDocument ? templateDocument.emoji : emoji,
title: templateDocument
? DocumentHelper.replaceTemplateVariables(templateDocument.title, user)
: title,

View File

@@ -1,5 +1,6 @@
import randomstring from "randomstring";
import { v4 as uuidv4 } from "uuid";
import slugify from "@shared/utils/slugify";
import {
buildUser,
buildGroup,
@@ -7,7 +8,6 @@ import {
buildTeam,
buildDocument,
} from "@server/test/factories";
import slugify from "@server/utils/slugify";
import Collection from "./Collection";
import Document from "./Document";

View File

@@ -27,9 +27,9 @@ import isUUID from "validator/lib/isUUID";
import type { CollectionSort } from "@shared/types";
import { CollectionPermission, NavigationNode } from "@shared/types";
import { sortNavigationNodes } from "@shared/utils/collections";
import slugify from "@shared/utils/slugify";
import { SLUG_URL_REGEX } from "@shared/utils/urlHelpers";
import { CollectionValidation } from "@shared/validations";
import slugify from "@server/utils/slugify";
import CollectionGroup from "./CollectionGroup";
import CollectionUser from "./CollectionUser";
import Document from "./Document";

View File

@@ -1,3 +1,4 @@
import slugify from "@shared/utils/slugify";
import Document from "@server/models/Document";
import {
buildDocument,
@@ -6,7 +7,6 @@ import {
buildTeam,
buildUser,
} from "@server/test/factories";
import slugify from "@server/utils/slugify";
beforeEach(() => {
jest.resetAllMocks();

View File

@@ -34,9 +34,9 @@ import {
import isUUID from "validator/lib/isUUID";
import type { NavigationNode } from "@shared/types";
import getTasks from "@shared/utils/getTasks";
import slugify from "@shared/utils/slugify";
import { SLUG_URL_REGEX } from "@shared/utils/urlHelpers";
import { DocumentValidation } from "@shared/validations";
import slugify from "@server/utils/slugify";
import Backlink from "./Backlink";
import Collection from "./Collection";
import FileOperation from "./FileOperation";

View File

@@ -179,11 +179,27 @@ allow(User, "move", Document, (user, document) => {
return user.teamId === document.teamId;
});
allow(User, ["pin", "unpin"], Document, (user, document) => {
if (!document || document.isDraft) {
allow(User, "pin", Document, (user, document) => {
if (
!document ||
document.isDraft ||
!document.isActive ||
document.template
) {
return false;
}
if (document.template) {
invariant(
document.collection,
"collection is missing, did you forget to include in the query scope?"
);
if (cannot(user, "update", document.collection)) {
return false;
}
return user.teamId === document.teamId;
});
allow(User, "unpin", Document, (user, document) => {
if (!document || document.isDraft || document.template) {
return false;
}
invariant(
@@ -197,10 +213,12 @@ allow(User, ["pin", "unpin"], Document, (user, document) => {
});
allow(User, ["subscribe", "unsubscribe"], Document, (user, document) => {
if (!document || !document.isActive || document.isDraft) {
return false;
}
if (document.template) {
if (
!document ||
!document.isActive ||
document.isDraft ||
document.template
) {
return false;
}
invariant(
@@ -284,7 +302,12 @@ allow(User, "restore", Document, (user, document) => {
});
allow(User, "archive", Document, (user, document) => {
if (!document || !document.isActive || document.isDraft) {
if (
!document ||
!document.isActive ||
document.isDraft ||
document.template
) {
return false;
}
invariant(

View File

@@ -9,6 +9,7 @@ import { Op, ScopeOptions, WhereOptions } from "sequelize";
import { TeamPreference } from "@shared/types";
import { subtractDate } from "@shared/utils/date";
import { bytesToHumanReadable } from "@shared/utils/files";
import slugify from "@shared/utils/slugify";
import documentCreator from "@server/commands/documentCreator";
import documentImporter from "@server/commands/documentImporter";
import documentLoader from "@server/commands/documentLoader";
@@ -55,7 +56,6 @@ import ZipHelper from "@server/utils/ZipHelper";
import { getFileFromRequest } from "@server/utils/koa";
import parseAttachmentIds from "@server/utils/parseAttachmentIds";
import { getTeamFromContext } from "@server/utils/passport";
import slugify from "@server/utils/slugify";
import { assertPresent } from "@server/validation";
import pagination from "../middlewares/pagination";
import * as T from "./schema";

View File

@@ -1,6 +1,7 @@
import Router from "koa-router";
import { Op } from "sequelize";
import { RevisionHelper } from "@shared/utils/RevisionHelper";
import slugify from "@shared/utils/slugify";
import { ValidationError } from "@server/errors";
import auth from "@server/middlewares/authentication";
import validate from "@server/middlewares/validate";
@@ -9,7 +10,6 @@ import DocumentHelper from "@server/models/helpers/DocumentHelper";
import { authorize } from "@server/policies";
import { presentRevision } from "@server/presenters";
import { APIContext } from "@server/types";
import slugify from "@server/utils/slugify";
import pagination from "../middlewares/pagination";
import * as T from "./schema";

View File

@@ -1,9 +0,0 @@
import slug from "slug";
slug.defaults.mode = "rfc3986";
export default function slugify(text: string): string {
return slug(text, {
remove: /[.]/g,
});
}