feat: reverse shares (#86)

* add first concept

* add reverse share funcionality to frontend

* allow creator to limit share expiration

* moved reverse share in seperate module

* add table to manage reverse shares

* delete complete share if reverse share was deleted

* optimize function names

* add db migration

* enable reverse share email notifications

* fix config variable descriptions

* fix migration for new installations
This commit is contained in:
Elias Schneider
2023-01-26 13:44:04 +01:00
committed by GitHub
parent 1ceb07b89e
commit 4a5fb549c6
43 changed files with 1456 additions and 280 deletions

View File

@@ -3,6 +3,7 @@ import * as crypto from "crypto";
const configVariables: Prisma.ConfigCreateInput[] = [
{
id: 1,
key: "SETUP_FINISHED",
description: "Whether the setup has been finished",
type: "boolean",
@@ -12,6 +13,7 @@ const configVariables: Prisma.ConfigCreateInput[] = [
locked: true,
},
{
id: 2,
key: "APP_URL",
description: "On which URL Pingvin Share is available",
type: "string",
@@ -20,6 +22,7 @@ const configVariables: Prisma.ConfigCreateInput[] = [
secret: false,
},
{
id: 3,
key: "SHOW_HOME_PAGE",
description: "Whether to show the home page",
type: "boolean",
@@ -28,6 +31,7 @@ const configVariables: Prisma.ConfigCreateInput[] = [
secret: false,
},
{
id: 4,
key: "ALLOW_REGISTRATION",
description: "Whether registration is allowed",
type: "boolean",
@@ -36,6 +40,7 @@ const configVariables: Prisma.ConfigCreateInput[] = [
secret: false,
},
{
id: 5,
key: "ALLOW_UNAUTHENTICATED_SHARES",
description: "Whether unauthorized users can create shares",
type: "boolean",
@@ -44,6 +49,8 @@ const configVariables: Prisma.ConfigCreateInput[] = [
secret: false,
},
{
id: 6,
key: "MAX_SHARE_SIZE",
description: "Maximum share size in bytes",
type: "number",
@@ -52,6 +59,7 @@ const configVariables: Prisma.ConfigCreateInput[] = [
secret: false,
},
{
id: 7,
key: "JWT_SECRET",
description: "Long random string used to sign JWT tokens",
type: "string",
@@ -60,6 +68,7 @@ const configVariables: Prisma.ConfigCreateInput[] = [
locked: true,
},
{
id: 8,
key: "TOTP_SECRET",
description: "A 16 byte random string used to generate TOTP secrets",
type: "string",
@@ -68,65 +77,103 @@ const configVariables: Prisma.ConfigCreateInput[] = [
locked: true,
},
{
key: "ENABLE_EMAIL_RECIPIENTS",
id: 9,
key: "ENABLE_SHARE_EMAIL_RECIPIENTS",
description:
"Whether to send emails to recipients. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
"Whether to allow emails to share recipients. Only enable this if you have enabled SMTP.",
type: "boolean",
value: "false",
category: "email",
secret: false,
},
{
key: "EMAIL_MESSAGE",
id: 10,
key: "SHARE_RECEPIENTS_EMAIL_MESSAGE",
description:
"Message which gets sent to the recipients. {creator} and {shareUrl} will be replaced with the creator's name and the share URL.",
"Message which gets sent to the share recipients. {creator} and {shareUrl} will be replaced with the creator's name and the share URL.",
type: "text",
value:
"Hey!\n{creator} shared some files with you. View or download the files with this link: {shareUrl}\nShared securely with Pingvin Share 🐧",
category: "email",
category: "email",
},
{
key: "EMAIL_SUBJECT",
description: "Subject of the email which gets sent to the recipients.",
id: 11,
key: "SHARE_RECEPIENTS_EMAIL_SUBJECT",
description:
"Subject of the email which gets sent to the share recipients.",
type: "string",
value: "Files shared with you",
category: "email",
},
{
id: 12,
key: "REVERSE_SHARE_EMAIL_MESSAGE",
description:
"Message which gets sent when someone created a share with your reverse share link. {shareUrl} will be replaced with the creator's name and the share URL.",
type: "text",
value:
"Hey!\nA share was just created with your reverse share link: {shareUrl}\nShared securely with Pingvin Share 🐧",
category: "email",
},
{
id: 13,
key: "REVERSE_SHARE_EMAIL_SUBJECT",
description:
"Subject of the email which gets sent when someone created a share with your reverse share link.",
type: "string",
value: "Reverse share link used",
category: "email",
},
{
id: 14,
key: "SMTP_ENABLED",
description:
"Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.",
type: "boolean",
value: "false",
category: "smtp",
secret: false,
},
{
id: 15,
key: "SMTP_HOST",
description: "Host of the SMTP server",
type: "string",
value: "",
category: "email",
category: "smtp",
},
{
id: 16,
key: "SMTP_PORT",
description: "Port of the SMTP server",
type: "number",
value: "0",
category: "email",
category: "smtp",
},
{
id: 17,
key: "SMTP_EMAIL",
description: "Email address which the emails get sent from",
type: "string",
value: "",
category: "email",
category: "smtp",
},
{
id: 18,
key: "SMTP_USERNAME",
description: "Username of the SMTP server",
type: "string",
value: "",
category: "email",
category: "smtp",
},
{
id: 19,
key: "SMTP_PASSWORD",
description: "Password of the SMTP server",
type: "string",
value: "",
obscured: true,
category: "email",
category: "smtp",
},
];