mirror of
https://github.com/YunoHost-Apps/outline_ynh.git
synced 2024-09-03 19:56:12 +02:00
Merge branch 'v0.72.2-anthropologiebiblique' into v0.73.1-anthropologiebiblique
This commit is contained in:
commit
e284d26a4e
8 changed files with 736 additions and 5 deletions
|
@ -1,5 +1,5 @@
|
|||
SOURCE_URL=https://github.com/outline/outline/archive/ebeb201a9f48e2c6b619a0d152e051946849aa10.zip
|
||||
SOURCE_SUM=7f7afaff1c12a197583871659f7d08355586a4727133e903a63fd5def1bfbcd2
|
||||
SOURCE_URL=https://github.com/outline/outline/archive/3212d37ca5e6e061d454e10779a2ab03838cb8f3.zip
|
||||
SOURCE_SUM=30feb816c69c5725508a8845feefb84a690fa46e88853aaa303460d9da0e998c
|
||||
SOURCE_SUM_PRG=sha256sum
|
||||
SOURCE_FORMAT=zip
|
||||
SOURCE_IN_SUBDIR=true
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
### Not totally free licence
|
||||
Outline is a softwared licenced under [BUSL 1.1 licence](https://spdx.org/licenses/BUSL-1.1.html).
|
||||
⚠️ That licence **is not totally free**. Please read it very carefully if you have any commercial use in mind.
|
||||
The Outline version shipped with this package (v0.72.1) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
|
||||
The Outline version shipped with this package (v0.72.2) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
|
||||
|
||||
### Known limitations
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"en": "Wiki and knowledge base for teams",
|
||||
"fr": "Wiki et base de connaissances pour les équipes"
|
||||
},
|
||||
"version": "0.72.1~ynh1",
|
||||
"version": "0.72.2~ynh1",
|
||||
"url": "www.getoutline.com",
|
||||
"upstream": {
|
||||
"license": "BUSL-1.1",
|
||||
|
|
|
@ -189,7 +189,7 @@ pushd "$final_path"
|
|||
ynh_script_progression --message="Fetching Yarn production dependencies... This can be very long, be patient !" --weight=18
|
||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1
|
||||
ynh_script_progression --message="Building... This can be very long, be patient !" --weight=18
|
||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3200" yarn build 2>&1
|
||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3900" yarn build 2>&1
|
||||
ynh_script_progression --message="Cleaning cache... " --weight=3
|
||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1
|
||||
popd
|
||||
|
|
141
sources/patches/app-02-visitor.patch
Normal file
141
sources/patches/app-02-visitor.patch
Normal file
|
@ -0,0 +1,141 @@
|
|||
diff --git a/package.json b/package.json
|
||||
index b33348a07..24a4af6f2 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -157,6 +157,7 @@
|
||||
"patch-package": "^7.0.2",
|
||||
"pg": "^8.11.1",
|
||||
"pg-tsquery": "^8.4.1",
|
||||
+ "passport-req": "^0.1.1",
|
||||
"polished": "^4.2.2",
|
||||
"prosemirror-codemark": "^0.4.2",
|
||||
"prosemirror-commands": "^1.5.2",
|
||||
diff --git a/plugins/req/plugin.json b/plugins/req/plugin.json
|
||||
new file mode 100644
|
||||
index 000000000..ae7c40333
|
||||
--- /dev/null
|
||||
+++ b/plugins/req/plugin.json
|
||||
@@ -0,0 +1,4 @@
|
||||
+{
|
||||
+ "name": "visiteur",
|
||||
+ "description": "Adds an req compatible authentication provider."
|
||||
+}
|
||||
diff --git a/plugins/req/server/.babelrc b/plugins/req/server/.babelrc
|
||||
new file mode 100644
|
||||
index 000000000..2bc0ef3ed
|
||||
--- /dev/null
|
||||
+++ b/plugins/req/server/.babelrc
|
||||
@@ -0,0 +1,3 @@
|
||||
+{
|
||||
+ "extends": "../../../server/.babelrc"
|
||||
+}
|
||||
diff --git a/plugins/req/server/auth/req.ts b/plugins/req/server/auth/req.ts
|
||||
new file mode 100644
|
||||
index 000000000..bc03fc6d3
|
||||
--- /dev/null
|
||||
+++ b/plugins/req/server/auth/req.ts
|
||||
@@ -0,0 +1,70 @@
|
||||
+import passport from "@outlinewiki/koa-passport";
|
||||
+import type { Context } from "koa";
|
||||
+import Router from "koa-router";
|
||||
+import { capitalize } from "lodash";
|
||||
+import { Strategy as ReqStrategy } from "passport-req";
|
||||
+import { slugifyDomain } from "@shared/utils/domains";
|
||||
+import accountProvisioner from "@server/commands/accountProvisioner";
|
||||
+import env from "@server/env";
|
||||
+import passportMiddleware from "@server/middlewares/passport";
|
||||
+import { User } from "@server/models";
|
||||
+import { AuthenticationResult } from "@server/types";
|
||||
+import {
|
||||
+ StateStore,
|
||||
+ getTeamFromContext,
|
||||
+ getClientFromContext,
|
||||
+} from "@server/utils/passport";
|
||||
+
|
||||
+const router = new Router();
|
||||
+const providerName = "req";
|
||||
+
|
||||
+export const config = {
|
||||
+ name: "visiteur",
|
||||
+ enabled: true,
|
||||
+};
|
||||
+
|
||||
+if (true) {
|
||||
+ passport.use(
|
||||
+ new ReqStrategy(
|
||||
+ async function (req,done) {
|
||||
+ try {
|
||||
+ const domain = "domain.tld";
|
||||
+ const subdomain = domain.split(".")[0];
|
||||
+ const teamName = capitalize(subdomain);
|
||||
+ const name = "visiteur";
|
||||
+ const email = "visiteur@anthropologiebiblique.fr";
|
||||
+ const result = await accountProvisioner({
|
||||
+ ip: req.ip,
|
||||
+ team: {
|
||||
+ name: teamName,
|
||||
+ domain,
|
||||
+ subdomain,
|
||||
+ },
|
||||
+ user: {
|
||||
+ name: name,
|
||||
+ email: email,
|
||||
+ avatarUrl: null,
|
||||
+ },
|
||||
+ authenticationProvider: {
|
||||
+ name: providerName,
|
||||
+ providerId: domain,
|
||||
+ },
|
||||
+ authentication: {
|
||||
+ providerId: "1234",
|
||||
+ accessToken: null,
|
||||
+ refreshToken: null,
|
||||
+ scopes: [],
|
||||
+ },
|
||||
+ });
|
||||
+ return done(null, result.user, result);
|
||||
+ } catch (err) {
|
||||
+ return done(err, null);
|
||||
+ }
|
||||
+ }
|
||||
+ )
|
||||
+ );
|
||||
+
|
||||
+ router.get("req", passportMiddleware(providerName));
|
||||
+}
|
||||
+
|
||||
+export default router;
|
||||
diff --git a/yarn.lock b/yarn.lock
|
||||
index 2db13c657..2dbdf3907 100644
|
||||
--- a/yarn.lock
|
||||
+++ b/yarn.lock
|
||||
@@ -10340,6 +10340,14 @@ passport-oauth@1.0.x:
|
||||
passport-oauth1 "1.x.x"
|
||||
passport-oauth2 "1.x.x"
|
||||
|
||||
+passport-req@^0.1.1:
|
||||
+ version "0.1.1"
|
||||
+ resolved "https://registry.yarnpkg.com/passport-req/-/passport-req-0.1.1.tgz#451bff1500b3d464a768d42f0762328a21236a18"
|
||||
+ integrity sha512-9qmM0vD5v7jYLWxezNNCleOw+8IkVAuvOwQ6NJaUuJkdFJTR1KatXH1i5MxWgffx+libLWYLRUPtc6GHOmn+6w==
|
||||
+ dependencies:
|
||||
+ passport "~0.1.1"
|
||||
+ pkginfo "0.2.x"
|
||||
+
|
||||
passport-slack-oauth2@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/passport-slack-oauth2/-/passport-slack-oauth2-1.2.0.tgz#d214a698b55a137393636a26827747f6c436dab4"
|
||||
@@ -10361,6 +10369,14 @@ passport@^0.6.0:
|
||||
pause "0.0.1"
|
||||
utils-merge "^1.0.1"
|
||||
|
||||
+passport@~0.1.1:
|
||||
+ version "0.1.18"
|
||||
+ resolved "https://registry.yarnpkg.com/passport/-/passport-0.1.18.tgz#c8264479dcb6414cadbb66752d12b37e0b6525a1"
|
||||
+ integrity sha512-qteYojKG/qth7UBbbGU7aqhe5ndJs6YaUkH2B6+7FWQ0OeyYmWknzOATpMhdoSTDcLLliq9n4Fcy1mGs80iUMw==
|
||||
+ dependencies:
|
||||
+ pause "0.0.1"
|
||||
+ pkginfo "0.2.x"
|
||||
+
|
||||
passthrough-counter@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/passthrough-counter/-/passthrough-counter-1.0.0.tgz#1967d9e66da572b5c023c787db112a387ab166fa"
|
59
sources/patches/app-03-login.patch
Normal file
59
sources/patches/app-03-login.patch
Normal file
|
@ -0,0 +1,59 @@
|
|||
diff --git a/app/scenes/Login/components/AuthenticationProvider.tsx b/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||
index af218c06c..b2d93d994 100644
|
||||
--- a/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||
+++ b/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||
@@ -91,7 +91,7 @@ function AuthenticationProvider(props: Props) {
|
||||
<InputLarge
|
||||
type="email"
|
||||
name="email"
|
||||
- placeholder="me@domain.com"
|
||||
+ placeholder="email@domaine.fr"
|
||||
value={email}
|
||||
onChange={handleChangeEmail}
|
||||
disabled={isSubmitting}
|
||||
@@ -100,12 +100,12 @@ function AuthenticationProvider(props: Props) {
|
||||
short
|
||||
/>
|
||||
<ButtonLarge type="submit" disabled={isSubmitting}>
|
||||
- {t("Sign In")} →
|
||||
+ {t("S'identifier")} →
|
||||
</ButtonLarge>
|
||||
</>
|
||||
) : (
|
||||
<ButtonLarge type="submit" icon={<EmailIcon />} fullwidth>
|
||||
- {t("Continue with Email")}
|
||||
+ {t("Accès membre (email)")}
|
||||
</ButtonLarge>
|
||||
)}
|
||||
</Form>
|
||||
@@ -120,7 +120,7 @@ function AuthenticationProvider(props: Props) {
|
||||
icon={<PluginIcon id={id} />}
|
||||
fullwidth
|
||||
>
|
||||
- {t("Continue with {{ authProviderName }}", {
|
||||
+ {t("Accès {{ authProviderName }}", {
|
||||
authProviderName: name,
|
||||
})}
|
||||
</ButtonLarge>
|
||||
diff --git a/app/scenes/Login/index.tsx b/app/scenes/Login/index.tsx
|
||||
index de4245890..c751e3299 100644
|
||||
--- a/app/scenes/Login/index.tsx
|
||||
+++ b/app/scenes/Login/index.tsx
|
||||
@@ -255,7 +255,7 @@ function Login({ children }: Props) {
|
||||
) : (
|
||||
<>
|
||||
<StyledHeading as="h2" centered>
|
||||
- {t("Login to {{ authProviderName }}", {
|
||||
+ {t("Bienvenue sur Anthropologie Biblique", {
|
||||
authProviderName: config.name || env.APP_NAME,
|
||||
})}
|
||||
</StyledHeading>
|
||||
@@ -273,7 +273,7 @@ function Login({ children }: Props) {
|
||||
{hasMultipleProviders && (
|
||||
<>
|
||||
<Note>
|
||||
- {t("You signed in with {{ authProviderName }} last time.", {
|
||||
+ {t("Vous vous êtes authentifié avec l'accès {{ authProviderName }} la dernière fois.", {
|
||||
authProviderName: defaultProvider.name,
|
||||
})}
|
||||
</Note>
|
151
sources/patches/app-04-bible.patch
Normal file
151
sources/patches/app-04-bible.patch
Normal file
|
@ -0,0 +1,151 @@
|
|||
diff --git a/app/editor/menus/block.tsx b/app/editor/menus/block.tsx
|
||||
index f795fc56d..a4dc4e17a 100644
|
||||
--- a/app/editor/menus/block.tsx
|
||||
+++ b/app/editor/menus/block.tsx
|
||||
@@ -21,6 +21,7 @@ import {
|
||||
MathIcon,
|
||||
DoneIcon,
|
||||
EmbedIcon,
|
||||
+ BookmarkedIcon,
|
||||
} from "outline-icons";
|
||||
import * as React from "react";
|
||||
import styled from "styled-components";
|
||||
@@ -203,6 +204,13 @@ export default function blockMenuItems(dictionary: Dictionary): MenuItem[] {
|
||||
keywords: "notice card suggestion",
|
||||
attrs: { style: "tip" },
|
||||
},
|
||||
+ {
|
||||
+ name: "container_notice",
|
||||
+ title: dictionary.bibleNotice,
|
||||
+ icon: <BookmarkedIcon />,
|
||||
+ keywords: "notice card bible",
|
||||
+ attrs: { style: "bible" },
|
||||
+ },
|
||||
{
|
||||
name: "separator",
|
||||
},
|
||||
diff --git a/app/hooks/useDictionary.ts b/app/hooks/useDictionary.ts
|
||||
index 6472c88cc..8bedb092d 100644
|
||||
--- a/app/hooks/useDictionary.ts
|
||||
+++ b/app/hooks/useDictionary.ts
|
||||
@@ -78,6 +78,8 @@ export default function useDictionary() {
|
||||
warningNotice: t("Warning notice"),
|
||||
success: t("Success"),
|
||||
successNotice: t("Success notice"),
|
||||
+ bible: t("Bible"),
|
||||
+ bibleNotice: t("Bible quote"),
|
||||
insertDate: t("Current date"),
|
||||
insertTime: t("Current time"),
|
||||
insertDateTime: t("Current date and time"),
|
||||
diff --git a/app/scenes/Document/components/Document.tsx b/app/scenes/Document/components/Document.tsx
|
||||
index 8e3542d40..8a7c461af 100644
|
||||
--- a/app/scenes/Document/components/Document.tsx
|
||||
+++ b/app/scenes/Document/components/Document.tsx
|
||||
@@ -552,11 +552,6 @@ class DocumentScene extends React.Component<Props> {
|
||||
</Flex>
|
||||
</React.Suspense>
|
||||
</MaxWidth>
|
||||
- {isShare &&
|
||||
- !parseDomain(window.location.origin).custom &&
|
||||
- !auth.user && (
|
||||
- <Branding href="//www.getoutline.com?ref=sharelink" />
|
||||
- )}
|
||||
</Container>
|
||||
{!isShare && (
|
||||
<Footer>
|
||||
diff --git a/app/typings/styled-components.d.ts b/app/typings/styled-components.d.ts
|
||||
index f30b74449..406e1fcde 100644
|
||||
--- a/app/typings/styled-components.d.ts
|
||||
+++ b/app/typings/styled-components.d.ts
|
||||
@@ -54,6 +54,8 @@ declare module "styled-components" {
|
||||
noticeWarningText: string;
|
||||
noticeSuccessBackground: string;
|
||||
noticeSuccessText: string;
|
||||
+ noticeBibleBackground: string;
|
||||
+ noticeBibleText: string;
|
||||
}
|
||||
|
||||
interface Colors {
|
||||
diff --git a/shared/editor/components/Styles.ts b/shared/editor/components/Styles.ts
|
||||
index a1f818892..df3d469df 100644
|
||||
--- a/shared/editor/components/Styles.ts
|
||||
+++ b/shared/editor/components/Styles.ts
|
||||
@@ -865,6 +865,20 @@ h6 {
|
||||
}
|
||||
}
|
||||
|
||||
+.notice-block.bible {
|
||||
+ background: ${transparentize(0.9, props.theme.noticeBibleBackground)};
|
||||
+ border-left: 4px solid ${props.theme.noticeBibleBackground};
|
||||
+ color: ${props.theme.noticeBibleText};
|
||||
+
|
||||
+ .icon {
|
||||
+ color: ${props.theme.noticeBibleBackground};
|
||||
+ }
|
||||
+
|
||||
+ a {
|
||||
+ color: ${props.theme.noticeBibleText};
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
blockquote {
|
||||
margin: 0;
|
||||
padding: 8px 10px 8px 1.5em;
|
||||
diff --git a/shared/editor/nodes/Notice.tsx b/shared/editor/nodes/Notice.tsx
|
||||
index bd976e69b..9ee40b8d5 100644
|
||||
--- a/shared/editor/nodes/Notice.tsx
|
||||
+++ b/shared/editor/nodes/Notice.tsx
|
||||
@@ -1,5 +1,5 @@
|
||||
import Token from "markdown-it/lib/token";
|
||||
-import { WarningIcon, InfoIcon, StarredIcon, DoneIcon } from "outline-icons";
|
||||
+import { WarningIcon, InfoIcon, StarredIcon, BookmarkedIcon, DoneIcon } from "outline-icons";
|
||||
import { wrappingInputRule } from "prosemirror-inputrules";
|
||||
import { NodeSpec, Node as ProsemirrorNode, NodeType } from "prosemirror-model";
|
||||
import * as React from "react";
|
||||
@@ -44,6 +44,8 @@ export default class Notice extends Node {
|
||||
? "warning"
|
||||
: dom.className.includes("success")
|
||||
? "success"
|
||||
+ : dom.className.includes("bible")
|
||||
+ ? "bible"
|
||||
: undefined,
|
||||
}),
|
||||
},
|
||||
@@ -93,6 +95,8 @@ export default class Notice extends Node {
|
||||
component = <WarningIcon />;
|
||||
} else if (node.attrs.style === "success") {
|
||||
component = <DoneIcon />;
|
||||
+ } else if (node.attrs.style === "bible") {
|
||||
+ component = <BookmarkedIcon />;
|
||||
} else {
|
||||
component = <InfoIcon />;
|
||||
}
|
||||
diff --git a/shared/styles/theme.ts b/shared/styles/theme.ts
|
||||
index f76e9c6a2..05d78850a 100644
|
||||
--- a/shared/styles/theme.ts
|
||||
+++ b/shared/styles/theme.ts
|
||||
@@ -32,6 +32,7 @@ const defaultColors: Colors = {
|
||||
warning: "#f08a24",
|
||||
success: "#2f3336",
|
||||
info: "#a0d3e8",
|
||||
+ bible: "#996633",
|
||||
brand: {
|
||||
red: "#FF5C80",
|
||||
pink: "#FF4DFA",
|
||||
@@ -96,6 +97,8 @@ const buildBaseTheme = (input: Partial<Colors>) => {
|
||||
noticeSuccessBackground: colors.brand.green,
|
||||
noticeSuccessText: colors.almostBlack,
|
||||
tableSelectedBackground: transparentize(0.8, colors.accent),
|
||||
+ noticeBibleBackground: "#996633",
|
||||
+ noticeBibleText: colors.almostBlack,
|
||||
breakpoints,
|
||||
...colors,
|
||||
...spacing,
|
||||
@@ -234,6 +237,7 @@ export const buildDarkTheme = (input: Partial<Colors>): DefaultTheme => {
|
||||
noticeTipText: colors.white,
|
||||
noticeWarningText: colors.white,
|
||||
noticeSuccessText: colors.white,
|
||||
+ noticeBibleText: colors.white,
|
||||
progressBarBackground: colors.slate,
|
||||
scrollbarBackground: colors.black,
|
||||
scrollbarThumb: colors.lightBlack,
|
380
sources/patches/diff.txt
Normal file
380
sources/patches/diff.txt
Normal file
|
@ -0,0 +1,380 @@
|
|||
diff --git a/app/components/Icons/OutlineIcon.tsx b/app/components/Icons/OutlineIcon.tsx
|
||||
index bb7f29ce7..70db50bcd 100644
|
||||
--- a/app/components/Icons/OutlineIcon.tsx
|
||||
+++ b/app/components/Icons/OutlineIcon.tsx
|
||||
@@ -22,7 +22,10 @@ export default function OutlineIcon({
|
||||
viewBox={cover ? "2 2 20 20" : "0 0 24 24"}
|
||||
version="1.1"
|
||||
>
|
||||
- <path d="M14.6667 20.2155V20.7163C14.6667 21.4253 14.0697 22 13.3333 22C13.1044 22 12.8792 21.9432 12.6797 21.8351L4.67965 17.5028C4.25982 17.2754 4 16.8478 4 16.384V7.61623C4 7.15248 4.25982 6.72478 4.67965 6.49742L12.6797 2.16508C13.3215 1.81751 14.1344 2.03666 14.4954 2.65456C14.6077 2.8467 14.6667 3.06343 14.6667 3.28388V3.78471L15.6169 3.51027C16.3222 3.30655 17.0655 3.69189 17.2771 4.37093C17.3144 4.49059 17.3333 4.61486 17.3333 4.73979V5.26091L18.5013 5.12036C19.232 5.03242 19.8984 5.53141 19.9897 6.23488C19.9966 6.2877 20 6.34088 20 6.3941V17.6061C20 18.3151 19.403 18.8898 18.6667 18.8898C18.6114 18.8898 18.5561 18.8865 18.5013 18.8799L17.3333 18.7393V19.2604C17.3333 19.9694 16.7364 20.5441 16 20.5441C15.8702 20.5441 15.7412 20.5259 15.6169 20.49L14.6667 20.2155ZM14.6667 18.8753L16 19.2604V4.73979L14.6667 5.12488V18.8753ZM17.3333 6.55456V17.4457L18.6667 17.6061V6.3941L17.3333 6.55456ZM5.33333 7.61623V16.384L13.3333 20.7163V3.28388L5.33333 7.61623ZM6.66667 8.47006L8 7.82823V16.172L6.66667 15.5302V8.47006Z" />
|
||||
+ <path
|
||||
+ d="m 20.289859,11.238917 c 1.1839,-0.602335 1.765465,-1.4746827 1.765465,-2.6378124 0,-0.9346579 -0.332322,-1.7031547 -0.996968,-2.2847194 -0.685416,-0.6023353 -1.557763,-0.913888 -2.617042,-0.913888 -1.350062,0 -2.388571,0.3946336 -3.136297,1.1839 -0.643876,0.6854159 -1.14236,1.495453 -1.433142,2.4508809 -0.290783,0.9761979 -0.436174,2.2639489 -0.436174,3.8424829 v 8.017288 c 0,1.495452 -0.145391,2.533961 -0.436174,3.136296 h 2.907825 c 0.270012,-0.685416 0.415404,-1.723925 0.415404,-3.136296 v -1.370832 c 0.602335,0.373863 1.24621,0.540025 1.931626,0.540025 1.246211,0 2.305489,-0.415404 3.177837,-1.246211 1.017739,-0.976198 1.516223,-2.222409 1.516223,-3.738632 0,-1.993936 -0.893118,-3.260917 -2.679353,-3.800942 z M 16.322756,9.4942219 c 0,-1.1839 0.08308,-2.035477 0.270012,-2.5339614 0.207702,-0.6231053 0.623105,-0.9138877 1.22544,-0.9138877 0.456944,0 0.810037,0.353093 1.059279,1.0592788 0.207702,0.581565 0.290783,1.2877513 0.290783,2.097788 0,0.3530929 -0.02077,0.7061859 -0.103851,1.0385084 -0.103851,0.436174 -0.228472,0.664646 -0.373863,0.664646 l -0.934658,-0.186931 c -0.664646,0 -0.996969,0.186931 -0.996969,0.560794 0,0.353093 0.270012,0.540025 0.830808,0.540025 l 0.893117,-0.186932 c 0.228472,0 0.498484,0.270013 0.768496,0.768497 0.415404,0.747726 0.623106,1.682384 0.623106,2.866284 0,1.474682 -0.103851,2.492421 -0.311553,3.094756 -0.249242,0.706186 -0.747726,1.059279 -1.474682,1.059279 -0.789267,0 -1.391602,-0.373863 -1.765465,-1.14236 z M 4.7941133,15.254891 Q 4.50597,15.041916 4.2303546,14.929164 q -0.2630873,-0.12528 -0.6389264,-0.12528 -0.400895,0 -0.9395978,0.150336 -0.5261747,0.137807 -1.3530207,0.425951 -0.087696,-0.0877 -0.1879196,-0.238032 Q 1.0231943,14.991803 0.98561039,14.82894 1.3739774,14.528269 1.8500403,14.190013 2.3386312,13.851758 2.9023899,13.500975 2.4639109,13.024912 2.1632396,12.624017 1.8625683,12.223122 1.6746488,11.884867 1.4867292,11.534084 1.3990334,11.208357 q -0.075168,-0.325728 -0.075168,-0.651455 0,-0.400895 0.1127517,-0.8268457 Q 1.561897,9.2915774 1.8124565,8.7904584 2.0755438,8.2768117 2.4764389,7.687997 2.8773339,7.0866545 3.4410926,6.3475042 3.0903094,5.9716651 2.7771101,5.658466 2.4764389,5.3452666 2.2384074,5.0571236 2.012904,4.7689802 1.8750963,4.5058928 1.7498166,4.2302774 1.7498166,3.9296061 q 0,-0.3633111 0.1628636,-0.7015663 Q 2.2008235,2.6266973 2.5140228,2.0879945 2.83975,1.5367639 3.1654772,0.9730052 3.3032849,0.9354213 3.4786765,0.9604772 q 0.1753915,0.012528 0.3131992,0.0751677 -0.012528,0.1002238 -0.012528,0.2129756 0,0.1127517 0,0.2004475 0,0.2630873 0.037584,0.5136467 0.037584,0.2380315 0.1378077,0.4885909 Q 4.054963,2.701865 4.2303546,2.9774804 4.4057462,3.2530957 4.6938895,3.578823 5.2200642,4.1425816 5.808879,4.7439241 6.4102214,5.3327389 7.0240919,5.9215533 7.6379623,6.4978401 8.2518332,7.0615985 8.8657036,7.6128292 9.4294624,8.1264762 9.8303572,7.700525 10.105973,7.3747979 q 0.288143,-0.3382551 0.463534,-0.5888148 0.18792,-0.2505593 0.263088,-0.4510069 0.08769,-0.2004472 0.08769,-0.3883668 0,-0.2881434 -0.200447,-0.5387027 Q 10.531923,5.1448193 10.068388,4.7439241 9.6925497,4.4181971 9.454518,4.1926935 9.2164867,3.96719 9.0786789,3.7917984 8.9533994,3.6038789 8.9032873,3.4535433 8.8657036,3.3032076 8.8657036,3.127816 q 0,-0.3006713 0.3633112,-0.839374 0.3758391,-0.5512306 1.2778532,-1.37807665 0.100223,-0.0250559 0.263087,0.0250559 0.162863,0.0501119 0.288143,0.11275175 -0.01253,0.1252797 -0.02506,0.2129755 0,0.087696 0,0.1628636 0,0.1378077 0.03758,0.2505594 0.03758,0.1127518 0.150336,0.2505594 0.112752,0.1252797 0.313199,0.3131993 0.200448,0.1879195 0.526175,0.4760628 0.726622,0.6514545 1.014766,1.0398216 0.288143,0.375839 0.288143,0.6890381 0,0.2380317 -0.112752,0.5888148 -0.100224,0.3507831 -0.438479,0.8769578 -0.338255,0.5136467 -0.964653,1.240269 -0.613871,0.7266222 -1.641164,1.7163319 0.538702,0.4885909 0.914541,0.8519021 0.388367,0.3507827 0.663983,0.6138707 0.275615,0.263087 0.463535,0.451007 0.200447,0.187919 0.363311,0.338255 0.488591,0.451007 0.751678,0.814318 0.263087,0.363311 0.263087,0.651454 0,0.225504 -0.100223,0.463535 -0.25056,0.576287 -0.476063,1.127517 -0.225504,0.551231 -0.463535,1.165102 -0.313199,0.02506 -0.551231,-0.03758 -0.187919,-0.501119 -0.451007,-0.92707 -0.250559,-0.425951 -0.55123,-0.80179 Q 10.744899,13.200304 10.419172,12.862049 10.093445,12.523794 9.7677178,12.198066 9.1037353,11.546612 8.3270013,10.81999 7.5627949,10.093367 6.811117,9.4043289 6.0594387,8.7152906 5.3829281,8.1139482 4.7189459,7.5126054 4.242883,7.0991825 3.6916523,7.8258048 3.5037328,8.3519795 3.3283412,8.8656262 3.3283412,9.3291611 q 0,0.3758392 0.1628636,0.7642059 0.1753916,0.388367 0.5387027,0.851902 0.3758391,0.463535 0.9646538,1.027294 0.5888144,0.563759 1.4407165,1.315437 0.025055,0.06264 0,0.125279 z"
|
||||
+ id="path11"
|
||||
+ style="stroke-width:0.36652" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
diff --git a/app/editor/menus/block.tsx b/app/editor/menus/block.tsx
|
||||
index f795fc56d..a4dc4e17a 100644
|
||||
--- a/app/editor/menus/block.tsx
|
||||
+++ b/app/editor/menus/block.tsx
|
||||
@@ -21,6 +21,7 @@ import {
|
||||
MathIcon,
|
||||
DoneIcon,
|
||||
EmbedIcon,
|
||||
+ BookmarkedIcon,
|
||||
} from "outline-icons";
|
||||
import * as React from "react";
|
||||
import styled from "styled-components";
|
||||
@@ -203,6 +204,13 @@ export default function blockMenuItems(dictionary: Dictionary): MenuItem[] {
|
||||
keywords: "notice card suggestion",
|
||||
attrs: { style: "tip" },
|
||||
},
|
||||
+ {
|
||||
+ name: "container_notice",
|
||||
+ title: dictionary.bibleNotice,
|
||||
+ icon: <BookmarkedIcon />,
|
||||
+ keywords: "notice card bible",
|
||||
+ attrs: { style: "bible" },
|
||||
+ },
|
||||
{
|
||||
name: "separator",
|
||||
},
|
||||
diff --git a/app/hooks/useDictionary.ts b/app/hooks/useDictionary.ts
|
||||
index 6472c88cc..8bedb092d 100644
|
||||
--- a/app/hooks/useDictionary.ts
|
||||
+++ b/app/hooks/useDictionary.ts
|
||||
@@ -78,6 +78,8 @@ export default function useDictionary() {
|
||||
warningNotice: t("Warning notice"),
|
||||
success: t("Success"),
|
||||
successNotice: t("Success notice"),
|
||||
+ bible: t("Bible"),
|
||||
+ bibleNotice: t("Bible quote"),
|
||||
insertDate: t("Current date"),
|
||||
insertTime: t("Current time"),
|
||||
insertDateTime: t("Current date and time"),
|
||||
diff --git a/app/scenes/Document/components/Document.tsx b/app/scenes/Document/components/Document.tsx
|
||||
index 8e3542d40..8a7c461af 100644
|
||||
--- a/app/scenes/Document/components/Document.tsx
|
||||
+++ b/app/scenes/Document/components/Document.tsx
|
||||
@@ -552,11 +552,6 @@ class DocumentScene extends React.Component<Props> {
|
||||
</Flex>
|
||||
</React.Suspense>
|
||||
</MaxWidth>
|
||||
- {isShare &&
|
||||
- !parseDomain(window.location.origin).custom &&
|
||||
- !auth.user && (
|
||||
- <Branding href="//www.getoutline.com?ref=sharelink" />
|
||||
- )}
|
||||
</Container>
|
||||
{!isShare && (
|
||||
<Footer>
|
||||
diff --git a/app/scenes/Login/components/AuthenticationProvider.tsx b/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||
index af218c06c..b2d93d994 100644
|
||||
--- a/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||
+++ b/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||
@@ -91,7 +91,7 @@ function AuthenticationProvider(props: Props) {
|
||||
<InputLarge
|
||||
type="email"
|
||||
name="email"
|
||||
- placeholder="me@domain.com"
|
||||
+ placeholder="email@domaine.fr"
|
||||
value={email}
|
||||
onChange={handleChangeEmail}
|
||||
disabled={isSubmitting}
|
||||
@@ -100,12 +100,12 @@ function AuthenticationProvider(props: Props) {
|
||||
short
|
||||
/>
|
||||
<ButtonLarge type="submit" disabled={isSubmitting}>
|
||||
- {t("Sign In")} →
|
||||
+ {t("S'identifier")} →
|
||||
</ButtonLarge>
|
||||
</>
|
||||
) : (
|
||||
<ButtonLarge type="submit" icon={<EmailIcon />} fullwidth>
|
||||
- {t("Continue with Email")}
|
||||
+ {t("Accès membre (email)")}
|
||||
</ButtonLarge>
|
||||
)}
|
||||
</Form>
|
||||
@@ -120,7 +120,7 @@ function AuthenticationProvider(props: Props) {
|
||||
icon={<PluginIcon id={id} />}
|
||||
fullwidth
|
||||
>
|
||||
- {t("Continue with {{ authProviderName }}", {
|
||||
+ {t("Accès {{ authProviderName }}", {
|
||||
authProviderName: name,
|
||||
})}
|
||||
</ButtonLarge>
|
||||
diff --git a/app/scenes/Login/index.tsx b/app/scenes/Login/index.tsx
|
||||
index de4245890..c751e3299 100644
|
||||
--- a/app/scenes/Login/index.tsx
|
||||
+++ b/app/scenes/Login/index.tsx
|
||||
@@ -255,7 +255,7 @@ function Login({ children }: Props) {
|
||||
) : (
|
||||
<>
|
||||
<StyledHeading as="h2" centered>
|
||||
- {t("Login to {{ authProviderName }}", {
|
||||
+ {t("Bienvenue sur Anthropologie Biblique", {
|
||||
authProviderName: config.name || env.APP_NAME,
|
||||
})}
|
||||
</StyledHeading>
|
||||
@@ -273,7 +273,7 @@ function Login({ children }: Props) {
|
||||
{hasMultipleProviders && (
|
||||
<>
|
||||
<Note>
|
||||
- {t("You signed in with {{ authProviderName }} last time.", {
|
||||
+ {t("Vous vous êtes authentifié avec l'accès {{ authProviderName }} la dernière fois.", {
|
||||
authProviderName: defaultProvider.name,
|
||||
})}
|
||||
</Note>
|
||||
diff --git a/app/typings/styled-components.d.ts b/app/typings/styled-components.d.ts
|
||||
index f30b74449..406e1fcde 100644
|
||||
--- a/app/typings/styled-components.d.ts
|
||||
+++ b/app/typings/styled-components.d.ts
|
||||
@@ -54,6 +54,8 @@ declare module "styled-components" {
|
||||
noticeWarningText: string;
|
||||
noticeSuccessBackground: string;
|
||||
noticeSuccessText: string;
|
||||
+ noticeBibleBackground: string;
|
||||
+ noticeBibleText: string;
|
||||
}
|
||||
|
||||
interface Colors {
|
||||
diff --git a/package.json b/package.json
|
||||
index b33348a07..24a4af6f2 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -157,6 +157,7 @@
|
||||
"patch-package": "^7.0.2",
|
||||
"pg": "^8.11.1",
|
||||
"pg-tsquery": "^8.4.1",
|
||||
+ "passport-req": "^0.1.1",
|
||||
"polished": "^4.2.2",
|
||||
"prosemirror-codemark": "^0.4.2",
|
||||
"prosemirror-commands": "^1.5.2",
|
||||
diff --git a/plugins/req/plugin.json b/plugins/req/plugin.json
|
||||
new file mode 100644
|
||||
index 000000000..ae7c40333
|
||||
--- /dev/null
|
||||
+++ b/plugins/req/plugin.json
|
||||
@@ -0,0 +1,4 @@
|
||||
+{
|
||||
+ "name": "visiteur",
|
||||
+ "description": "Adds an req compatible authentication provider."
|
||||
+}
|
||||
diff --git a/plugins/req/server/.babelrc b/plugins/req/server/.babelrc
|
||||
new file mode 100644
|
||||
index 000000000..2bc0ef3ed
|
||||
--- /dev/null
|
||||
+++ b/plugins/req/server/.babelrc
|
||||
@@ -0,0 +1,3 @@
|
||||
+{
|
||||
+ "extends": "../../../server/.babelrc"
|
||||
+}
|
||||
diff --git a/plugins/req/server/auth/req.ts b/plugins/req/server/auth/req.ts
|
||||
new file mode 100644
|
||||
index 000000000..bc03fc6d3
|
||||
--- /dev/null
|
||||
+++ b/plugins/req/server/auth/req.ts
|
||||
@@ -0,0 +1,70 @@
|
||||
+import passport from "@outlinewiki/koa-passport";
|
||||
+import type { Context } from "koa";
|
||||
+import Router from "koa-router";
|
||||
+import { capitalize } from "lodash";
|
||||
+import { Strategy as ReqStrategy } from "passport-req";
|
||||
+import { slugifyDomain } from "@shared/utils/domains";
|
||||
+import accountProvisioner from "@server/commands/accountProvisioner";
|
||||
+import env from "@server/env";
|
||||
+import passportMiddleware from "@server/middlewares/passport";
|
||||
+import { User } from "@server/models";
|
||||
+import { AuthenticationResult } from "@server/types";
|
||||
+import {
|
||||
+ StateStore,
|
||||
+ getTeamFromContext,
|
||||
+ getClientFromContext,
|
||||
+} from "@server/utils/passport";
|
||||
+
|
||||
+const router = new Router();
|
||||
+const providerName = "req";
|
||||
+
|
||||
+export const config = {
|
||||
+ name: "visiteur",
|
||||
+ enabled: true,
|
||||
+};
|
||||
+
|
||||
+if (true) {
|
||||
+ passport.use(
|
||||
+ new ReqStrategy(
|
||||
+ async function (req,done) {
|
||||
+ try {
|
||||
+ const domain = "domain.tld";
|
||||
+ const subdomain = domain.split(".")[0];
|
||||
+ const teamName = capitalize(subdomain);
|
||||
+ const name = "visiteur";
|
||||
+ const email = "visiteur@anthropologiebiblique.fr";
|
||||
+ const result = await accountProvisioner({
|
||||
+ ip: req.ip,
|
||||
+ team: {
|
||||
+ name: teamName,
|
||||
+ domain,
|
||||
+ subdomain,
|
||||
+ },
|
||||
+ user: {
|
||||
+ name: name,
|
||||
+ email: email,
|
||||
+ avatarUrl: null,
|
||||
+ },
|
||||
+ authenticationProvider: {
|
||||
+ name: providerName,
|
||||
+ providerId: domain,
|
||||
+ },
|
||||
+ authentication: {
|
||||
+ providerId: "1234",
|
||||
+ accessToken: null,
|
||||
+ refreshToken: null,
|
||||
+ scopes: [],
|
||||
+ },
|
||||
+ });
|
||||
+ return done(null, result.user, result);
|
||||
+ } catch (err) {
|
||||
+ return done(err, null);
|
||||
+ }
|
||||
+ }
|
||||
+ )
|
||||
+ );
|
||||
+
|
||||
+ router.get("req", passportMiddleware(providerName));
|
||||
+}
|
||||
+
|
||||
+export default router;
|
||||
\ No newline at end of file
|
||||
diff --git a/server/emails/mailer.tsx b/server/emails/mailer.tsx
|
||||
index 4d4f6f09c..f457025d5 100644
|
||||
--- a/server/emails/mailer.tsx
|
||||
+++ b/server/emails/mailer.tsx
|
||||
@@ -208,6 +208,7 @@ export class Mailer {
|
||||
: {
|
||||
rejectUnauthorized: false,
|
||||
},
|
||||
+ ignoreTLS:true
|
||||
};
|
||||
}
|
||||
|
||||
diff --git a/shared/editor/components/Styles.ts b/shared/editor/components/Styles.ts
|
||||
index a1f818892..df3d469df 100644
|
||||
--- a/shared/editor/components/Styles.ts
|
||||
+++ b/shared/editor/components/Styles.ts
|
||||
@@ -865,6 +865,20 @@ h6 {
|
||||
}
|
||||
}
|
||||
|
||||
+.notice-block.bible {
|
||||
+ background: ${transparentize(0.9, props.theme.noticeBibleBackground)};
|
||||
+ border-left: 4px solid ${props.theme.noticeBibleBackground};
|
||||
+ color: ${props.theme.noticeBibleText};
|
||||
+
|
||||
+ .icon {
|
||||
+ color: ${props.theme.noticeBibleBackground};
|
||||
+ }
|
||||
+
|
||||
+ a {
|
||||
+ color: ${props.theme.noticeBibleText};
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
blockquote {
|
||||
margin: 0;
|
||||
padding: 8px 10px 8px 1.5em;
|
||||
diff --git a/shared/editor/nodes/Notice.tsx b/shared/editor/nodes/Notice.tsx
|
||||
index bd976e69b..9ee40b8d5 100644
|
||||
--- a/shared/editor/nodes/Notice.tsx
|
||||
+++ b/shared/editor/nodes/Notice.tsx
|
||||
@@ -1,5 +1,5 @@
|
||||
import Token from "markdown-it/lib/token";
|
||||
-import { WarningIcon, InfoIcon, StarredIcon, DoneIcon } from "outline-icons";
|
||||
+import { WarningIcon, InfoIcon, StarredIcon, BookmarkedIcon, DoneIcon } from "outline-icons";
|
||||
import { wrappingInputRule } from "prosemirror-inputrules";
|
||||
import { NodeSpec, Node as ProsemirrorNode, NodeType } from "prosemirror-model";
|
||||
import * as React from "react";
|
||||
@@ -44,6 +44,8 @@ export default class Notice extends Node {
|
||||
? "warning"
|
||||
: dom.className.includes("success")
|
||||
? "success"
|
||||
+ : dom.className.includes("bible")
|
||||
+ ? "bible"
|
||||
: undefined,
|
||||
}),
|
||||
},
|
||||
@@ -93,6 +95,8 @@ export default class Notice extends Node {
|
||||
component = <WarningIcon />;
|
||||
} else if (node.attrs.style === "success") {
|
||||
component = <DoneIcon />;
|
||||
+ } else if (node.attrs.style === "bible") {
|
||||
+ component = <BookmarkedIcon />;
|
||||
} else {
|
||||
component = <InfoIcon />;
|
||||
}
|
||||
diff --git a/shared/styles/theme.ts b/shared/styles/theme.ts
|
||||
index f76e9c6a2..05d78850a 100644
|
||||
--- a/shared/styles/theme.ts
|
||||
+++ b/shared/styles/theme.ts
|
||||
@@ -32,6 +32,7 @@ const defaultColors: Colors = {
|
||||
warning: "#f08a24",
|
||||
success: "#2f3336",
|
||||
info: "#a0d3e8",
|
||||
+ bible: "#996633",
|
||||
brand: {
|
||||
red: "#FF5C80",
|
||||
pink: "#FF4DFA",
|
||||
@@ -96,6 +97,8 @@ const buildBaseTheme = (input: Partial<Colors>) => {
|
||||
noticeSuccessBackground: colors.brand.green,
|
||||
noticeSuccessText: colors.almostBlack,
|
||||
tableSelectedBackground: transparentize(0.8, colors.accent),
|
||||
+ noticeBibleBackground: "#996633",
|
||||
+ noticeBibleText: colors.almostBlack,
|
||||
breakpoints,
|
||||
...colors,
|
||||
...spacing,
|
||||
@@ -234,6 +237,7 @@ export const buildDarkTheme = (input: Partial<Colors>): DefaultTheme => {
|
||||
noticeTipText: colors.white,
|
||||
noticeWarningText: colors.white,
|
||||
noticeSuccessText: colors.white,
|
||||
+ noticeBibleText: colors.white,
|
||||
progressBarBackground: colors.slate,
|
||||
scrollbarBackground: colors.black,
|
||||
scrollbarThumb: colors.lightBlack,
|
||||
diff --git a/yarn.lock b/yarn.lock
|
||||
index 2db13c657..2dbdf3907 100644
|
||||
--- a/yarn.lock
|
||||
+++ b/yarn.lock
|
||||
@@ -10340,6 +10340,14 @@ passport-oauth@1.0.x:
|
||||
passport-oauth1 "1.x.x"
|
||||
passport-oauth2 "1.x.x"
|
||||
|
||||
+passport-req@^0.1.1:
|
||||
+ version "0.1.1"
|
||||
+ resolved "https://registry.yarnpkg.com/passport-req/-/passport-req-0.1.1.tgz#451bff1500b3d464a768d42f0762328a21236a18"
|
||||
+ integrity sha512-9qmM0vD5v7jYLWxezNNCleOw+8IkVAuvOwQ6NJaUuJkdFJTR1KatXH1i5MxWgffx+libLWYLRUPtc6GHOmn+6w==
|
||||
+ dependencies:
|
||||
+ passport "~0.1.1"
|
||||
+ pkginfo "0.2.x"
|
||||
+
|
||||
passport-slack-oauth2@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/passport-slack-oauth2/-/passport-slack-oauth2-1.2.0.tgz#d214a698b55a137393636a26827747f6c436dab4"
|
||||
@@ -10361,6 +10369,14 @@ passport@^0.6.0:
|
||||
pause "0.0.1"
|
||||
utils-merge "^1.0.1"
|
||||
|
||||
+passport@~0.1.1:
|
||||
+ version "0.1.18"
|
||||
+ resolved "https://registry.yarnpkg.com/passport/-/passport-0.1.18.tgz#c8264479dcb6414cadbb66752d12b37e0b6525a1"
|
||||
+ integrity sha512-qteYojKG/qth7UBbbGU7aqhe5ndJs6YaUkH2B6+7FWQ0OeyYmWknzOATpMhdoSTDcLLliq9n4Fcy1mGs80iUMw==
|
||||
+ dependencies:
|
||||
+ pause "0.0.1"
|
||||
+ pkginfo "0.2.x"
|
||||
+
|
||||
passthrough-counter@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/passthrough-counter/-/passthrough-counter-1.0.0.tgz#1967d9e66da572b5c023c787db112a387ab166fa"
|
Loading…
Add table
Reference in a new issue