diff --git a/backend/areas/apps/models.py b/backend/areas/apps/models.py index 73fd15504b59b73df5681773d33e0bd2e63b7822..e7898a14c1c67f40ff2d27176c7f7c30c861d653 100644 --- a/backend/areas/apps/models.py +++ b/backend/areas/apps/models.py @@ -165,7 +165,7 @@ class App(db.Model): FIXME: This should probably become a database field. """ - if self.slug in ['nextcloud', 'wordpress', 'wekan', 'zulip']: + if self.slug in ['nextcloud', 'wordpress', 'wekan', 'zulip', 'hedgedoc']: return 'stackspin-apps' return 'stackspin' diff --git a/backend/areas/apps/templates/stackspin-hedgedoc-variables.yaml.jinja b/backend/areas/apps/templates/stackspin-hedgedoc-variables.yaml.jinja new file mode 100644 index 0000000000000000000000000000000000000000..e0d339621b60c815d04003a1fe8780507e0fae57 --- /dev/null +++ b/backend/areas/apps/templates/stackspin-hedgedoc-variables.yaml.jinja @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: stackspin-hedgedoc-variables +data: + hedgedoc_mariadb_password: "{{ 32 | generate_password | b64encode }}" + hedgedoc_mariadb_root_password: "{{ 32 | generate_password | b64encode }}" diff --git a/deployment/helmchart/Chart.yaml b/deployment/helmchart/Chart.yaml index c32b4ac2d2292c7941a5d0e924ad770dd2b6b4bb..62fef710abc91f367d240266818e2ccff64d4c55 100644 --- a/deployment/helmchart/Chart.yaml +++ b/deployment/helmchart/Chart.yaml @@ -23,4 +23,4 @@ name: stackspin-dashboard sources: - https://open.greenhost.net/stackspin/dashboard/ - https://open.greenhost.net/stackspin/dashboard-backend/ -version: 1.6.2 +version: 1.6.3-hedgedoc diff --git a/deployment/helmchart/templates/job-initialize-user.yaml b/deployment/helmchart/templates/job-initialize-user.yaml index 4cf77350d3cbfbd3b2defeb9e3f732397d8ab95b..a1d6d1d95edeebb0c1a9762ed94daf6c2cb66b96 100644 --- a/deployment/helmchart/templates/job-initialize-user.yaml +++ b/deployment/helmchart/templates/job-initialize-user.yaml @@ -56,5 +56,6 @@ spec: flask cli user setrole $SETUP_EMAIL wordpress admin; flask cli user setrole $SETUP_EMAIL wekan admin; flask cli user setrole $SETUP_EMAIL zulip admin; + flask cli user setrole $SETUP_EMAIL hedgedoc admin; {{- end }} diff --git a/frontend/public/assets/hedgedoc.svg b/frontend/public/assets/hedgedoc.svg new file mode 100644 index 0000000000000000000000000000000000000000..e561ed32ce807fbf12f014d9d9c5d86a32a30975 --- /dev/null +++ b/frontend/public/assets/hedgedoc.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 1772 1772" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> + <g> + <path d="M1553.66,961.083L1628.91,885.825L1553.66,810.579L1610.27,720.483L1520.17,663.867L1555.32,563.421L1454.88,528.279L1466.79,422.533L1361.05,410.621L1349.13,304.871L1243.39,316.783L1208.24,216.338L1107.81,251.483L1051.18,161.383L961.073,218L885.831,142.754L810.589,218.004L720.485,161.392L663.873,251.488L563.431,216.338L528.289,316.779L422.539,304.863L410.627,410.604L304.885,422.517L316.802,528.258L216.348,563.408L251.493,663.846L161.393,720.458L218.014,810.575L142.756,885.825L218.006,961.083L161.393,1051.19L251.493,1107.8L216.348,1208.24L316.798,1243.39L304.885,1349.12L410.627,1361.04L422.539,1466.78L528.289,1454.87L563.431,1555.3L663.868,1520.17L720.485,1610.27L810.581,1553.65L885.831,1628.2L961.081,1553.67L1051.18,1610.28L1107.79,1520.17L1208.24,1555.32L1243.38,1454.88L1349.13,1466.79L1361.04,1361.04L1466.79,1349.13L1454.87,1243.39L1555.32,1208.24L1520.17,1107.79L1610.27,1051.18L1553.66,961.083Z" style="fill:rgb(181,31,8);fill-rule:nonzero;"/> + <path d="M1401.3,1004.78C1401.3,859.343 1283.4,741.439 1137.96,741.439C1065.72,741.439 1000.28,770.551 952.708,817.664L952.675,817.63L885.579,884.73L830.717,829.868C782.45,774.801 711.646,739.989 632.675,739.989C487.233,739.989 369.333,857.893 369.333,1003.33C369.333,1079.33 401.563,1147.76 453.054,1195.82L885.833,1628.37L1309.05,1204.88C1361.93,1155.11 1401.3,1084.88 1401.3,1004.78" style="fill:rgb(252,202,140);fill-rule:nonzero;"/> + <path d="M885.579,884.73L830.717,829.868C782.45,774.801 711.646,739.989 632.675,739.989C487.233,739.989 369.333,857.893 369.333,1003.33C369.333,1079.33 401.563,1147.76 453.054,1195.82L885.833,1628.37" style="fill:url(#_Linear1);fill-rule:nonzero;"/> + </g> + <path d="M885.833,1628.37L885.579,884.73" style="fill:none;"/> + <g> + <path d="M961.011,1553.59C941.732,1534.24 915.094,1522.28 885.686,1522.28C856.269,1522.28 829.64,1534.24 810.357,1553.59C810.665,1594.93 844.265,1628.35 885.682,1628.35C927.098,1628.35 960.702,1594.92 961.011,1553.59" style="fill:rgb(1,0,7);fill-rule:nonzero;"/> + <path d="M797.707,1098.22C797.707,1130.02 771.94,1155.79 740.136,1155.79C708.349,1155.79 682.578,1130.02 682.578,1098.22C682.578,1066.42 708.349,1040.65 740.136,1040.65C771.94,1040.65 797.707,1066.42 797.707,1098.22" style="fill:rgb(1,0,7);fill-rule:nonzero;"/> + <path d="M777.962,1089.59C777.962,1098.41 770.816,1105.53 762.012,1105.53C753.204,1105.53 746.054,1098.41 746.054,1089.59C746.054,1080.78 753.204,1073.63 762.012,1073.63C770.816,1073.63 777.962,1080.78 777.962,1089.59" style="fill:rgb(255,255,250);fill-rule:nonzero;"/> + <path d="M1089.65,1098.22C1089.65,1130.02 1063.88,1155.79 1032.08,1155.79C1000.29,1155.79 974.513,1130.02 974.513,1098.22C974.513,1066.42 1000.29,1040.65 1032.08,1040.65C1063.88,1040.65 1089.65,1066.42 1089.65,1098.22" style="fill:rgb(1,0,7);fill-rule:nonzero;"/> + <path d="M1069.9,1089.59C1069.9,1098.41 1062.75,1105.53 1053.95,1105.53C1045.14,1105.53 1037.99,1098.41 1037.99,1089.59C1037.99,1080.78 1045.14,1073.63 1053.95,1073.63C1062.75,1073.63 1069.9,1080.78 1069.9,1089.59" style="fill:rgb(255,255,250);fill-rule:nonzero;"/> + </g> + <defs> + <linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(200,-420,420,200,660,1340)"><stop offset="0" style="stop-color:rgb(252,202,140);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(220,160,85);stop-opacity:1"/></linearGradient> + </defs> +</svg> diff --git a/frontend/src/components/UserModal/consts.ts b/frontend/src/components/UserModal/consts.ts index 95cbbf0812a22ca98c2b1b1230a16b51c4426845..ebf5a1f93be1338ba981d95c5b8f29fd41e28eb7 100644 --- a/frontend/src/components/UserModal/consts.ts +++ b/frontend/src/components/UserModal/consts.ts @@ -1,6 +1,12 @@ import { UserRole } from 'src/services/users'; export const appAccessList = [ + { + name: 'hedgedoc', + image: '/assets/hedgedoc.svg', + label: 'HedgeDoc', + documentationUrl: 'https://docs.hedgedoc.org/', + }, { name: 'wekan', image: '/assets/wekan.svg', @@ -47,6 +53,10 @@ export const initialAppRoles = [ name: 'dashboard', role: UserRole.User, }, + { + name: 'hedgedoc', + role: UserRole.User, + }, { name: 'wekan', role: UserRole.User,