From 997a512e005d4cb0839e6207db62531768e17992 Mon Sep 17 00:00:00 2001 From: Lurkars Date: Tue, 12 Jan 2021 19:29:00 +0100 Subject: [PATCH] update --- .vscode/settings.json | 11 + package-lock.json | 99 ++-- package.json | 1 + src/.vscode/settings.json | 12 + src/app/app-routing.module.ts | 38 +- src/app/app.component.html | 28 +- src/app/app.component.scss | 33 -- src/app/app.component.ts | 4 +- src/app/app.module.ts | 28 +- src/app/pages/account/account.component.html | 2 +- .../security/security-totp.dialog.html | 16 + .../account/security/security.component.html | 29 +- .../account/security/security.component.scss | 2 +- .../account/security/security.component.ts | 90 ++- .../account/voucher/voucher.component.ts | 1 - src/app/pages/apps/apps.component.html | 35 +- src/app/pages/apps/apps.component.scss | 4 - .../form-login-totp.component.html | 28 + .../form-login-totp.component.scss | 3 + .../form-login-totp.component.spec.ts | 25 + .../form-login-totp.component.ts | 28 + .../form-login/form-login.component.html | 11 +- .../pages/form-login/form-login.component.ts | 3 +- .../pages/home/club/home-club.component.html | 29 + .../home/club/home-club.component.spec.ts | 25 + .../pages/home/club/home-club.component.ts | 16 + .../home/general/home-general.component.html | 28 + .../general/home-general.component.spec.ts | 25 + .../home/general/home-general.component.ts | 16 + src/app/pages/home/home.component.html | 37 +- src/app/pages/home/home.component.ts | 29 +- src/app/pages/home/home.imprint.html | 1 + src/app/pages/home/home.privacy-policy.html | 1 + .../home/privacy/home-privacy.component.html | 57 ++ .../privacy/home-privacy.component.spec.ts | 25 + .../home/privacy/home-privacy.component.ts | 16 + .../services/home-services.component.html | 523 ++++++++++++++++++ .../services/home-services.component.spec.ts | 25 + .../home/services/home-services.component.ts | 16 + .../login-totp/login-totp.component.html | 24 + .../login-totp/login-totp.component.scss | 3 + .../login-totp/login-totp.component.spec.ts | 25 + .../pages/login-totp/login-totp.component.ts | 54 ++ src/app/pages/login/login.component.html | 6 +- src/app/pages/login/login.component.ts | 31 +- .../password-reset.component.html | 43 ++ .../password-reset.component.scss | 3 + .../password-reset.component.spec.ts | 25 + .../password-reset.component.ts | 65 +++ .../pages/password/password.component.html | 8 +- src/app/pages/password/password.component.ts | 40 +- .../pages/register/register.component.html | 18 +- src/app/pages/register/register.component.ts | 31 +- src/app/pages/register/register.dialog.html | 12 +- .../username-dialog/username.dialog.ts | 2 - src/app/pages/tokens/tokens.component.html | 3 +- src/app/pages/tokens/tokens.component.ts | 4 +- src/app/services/auth.service.ts | 31 +- src/app/services/i18n.service.ts | 12 +- src/app/services/user.service.ts | 4 + .../ui/permissions/permissions.component.html | 10 +- .../ui/permissions/permissions.component.ts | 25 +- src/app/ui/quotas/quotas.component.html | 18 +- src/app/ui/quotas/quotas.component.ts | 31 +- src/app/utils/html/html.component.ts | 2 +- src/assets/i18n/de-informal.json | 151 ++++- src/assets/i18n/en.json | 38 +- src/assets/templates/about.de-informal.html | 3 - src/assets/templates/about.en.html | 3 - src/assets/templates/de-informal/about.html | 2 + .../templates/de-informal/club/about.html | 1 + .../templates/de-informal/club/charter.html | 202 +++++++ .../de-informal/club/membership.html | 7 + .../templates/de-informal/general/we.html | 4 + .../templates/de-informal/general/what.html | 11 + .../templates/de-informal/general/you.html | 7 + src/assets/templates/de-informal/imprint.html | 51 ++ .../templates/de-informal/privacy-policy.html | 384 +++++++++++++ .../templates/de-informal/privacy/design.html | 25 + .../templates/de-informal/privacy/email.html | 8 + .../de-informal/privacy/nextcloud.html | 14 + .../templates/de-informal/privacy/pretix.html | 3 + .../de-informal/privacy/we-bstly.html | 12 + .../de-informal/privacy/webserver.html | 9 + .../de-informal/services/active/email.html | 8 + .../services/active/nextcloud.html | 7 + .../de-informal/services/active/we-bstly.html | 8 + .../services/planned/bigbluebutton.html | 5 + .../services/planned/bitwarden.html | 7 + .../de-informal/services/planned/gitea.html | 10 + .../services/planned/jitsi-meet.html | 13 + .../de-informal/services/planned/matrix.html | 10 + .../de-informal/services/planned/pihole.html | 11 + .../services/planned/wireguard.html | 14 + src/assets/templates/test.en.html | 1 - src/styles.scss | 56 +- 96 files changed, 2711 insertions(+), 304 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/.vscode/settings.json create mode 100644 src/app/pages/account/security/security-totp.dialog.html create mode 100644 src/app/pages/form-login-totp/form-login-totp.component.html create mode 100644 src/app/pages/form-login-totp/form-login-totp.component.scss create mode 100644 src/app/pages/form-login-totp/form-login-totp.component.spec.ts create mode 100644 src/app/pages/form-login-totp/form-login-totp.component.ts create mode 100644 src/app/pages/home/club/home-club.component.html create mode 100644 src/app/pages/home/club/home-club.component.spec.ts create mode 100644 src/app/pages/home/club/home-club.component.ts create mode 100644 src/app/pages/home/general/home-general.component.html create mode 100644 src/app/pages/home/general/home-general.component.spec.ts create mode 100644 src/app/pages/home/general/home-general.component.ts create mode 100644 src/app/pages/home/home.imprint.html create mode 100644 src/app/pages/home/home.privacy-policy.html create mode 100644 src/app/pages/home/privacy/home-privacy.component.html create mode 100644 src/app/pages/home/privacy/home-privacy.component.spec.ts create mode 100644 src/app/pages/home/privacy/home-privacy.component.ts create mode 100644 src/app/pages/home/services/home-services.component.html create mode 100644 src/app/pages/home/services/home-services.component.spec.ts create mode 100644 src/app/pages/home/services/home-services.component.ts create mode 100644 src/app/pages/login-totp/login-totp.component.html create mode 100644 src/app/pages/login-totp/login-totp.component.scss create mode 100644 src/app/pages/login-totp/login-totp.component.spec.ts create mode 100644 src/app/pages/login-totp/login-totp.component.ts create mode 100644 src/app/pages/password-reset/password-reset.component.html create mode 100644 src/app/pages/password-reset/password-reset.component.scss create mode 100644 src/app/pages/password-reset/password-reset.component.spec.ts create mode 100644 src/app/pages/password-reset/password-reset.component.ts delete mode 100644 src/assets/templates/about.de-informal.html delete mode 100644 src/assets/templates/about.en.html create mode 100644 src/assets/templates/de-informal/about.html create mode 100644 src/assets/templates/de-informal/club/about.html create mode 100644 src/assets/templates/de-informal/club/charter.html create mode 100644 src/assets/templates/de-informal/club/membership.html create mode 100644 src/assets/templates/de-informal/general/we.html create mode 100644 src/assets/templates/de-informal/general/what.html create mode 100644 src/assets/templates/de-informal/general/you.html create mode 100644 src/assets/templates/de-informal/imprint.html create mode 100644 src/assets/templates/de-informal/privacy-policy.html create mode 100644 src/assets/templates/de-informal/privacy/design.html create mode 100644 src/assets/templates/de-informal/privacy/email.html create mode 100644 src/assets/templates/de-informal/privacy/nextcloud.html create mode 100644 src/assets/templates/de-informal/privacy/pretix.html create mode 100644 src/assets/templates/de-informal/privacy/we-bstly.html create mode 100644 src/assets/templates/de-informal/privacy/webserver.html create mode 100644 src/assets/templates/de-informal/services/active/email.html create mode 100644 src/assets/templates/de-informal/services/active/nextcloud.html create mode 100644 src/assets/templates/de-informal/services/active/we-bstly.html create mode 100644 src/assets/templates/de-informal/services/planned/bigbluebutton.html create mode 100644 src/assets/templates/de-informal/services/planned/bitwarden.html create mode 100644 src/assets/templates/de-informal/services/planned/gitea.html create mode 100644 src/assets/templates/de-informal/services/planned/jitsi-meet.html create mode 100644 src/assets/templates/de-informal/services/planned/matrix.html create mode 100644 src/assets/templates/de-informal/services/planned/pihole.html create mode 100644 src/assets/templates/de-informal/services/planned/wireguard.html delete mode 100644 src/assets/templates/test.en.html diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4bc8bcb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "spellright.language": [ + "German_de_DE" + ], + "spellright.documentTypes": [ + "html", + "markdown", + "latex", + "plaintext" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 65f161d..c40aa15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2624,6 +2624,15 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, + "angularx-qrcode": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/angularx-qrcode/-/angularx-qrcode-10.0.11.tgz", + "integrity": "sha512-sbtqdqAboEFNoyxgG4FQYPZDzwX9TlICT2mLpsC/Se3OuT+HntW56q8E/i1BL1fJhx7zt0JJR7bc7LfofUeAlQ==", + "requires": { + "qrcode": "1.4.2", + "tslib": "^2.0.0" + } + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -2655,7 +2664,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -3628,7 +3636,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, "requires": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -3638,14 +3645,12 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -3747,7 +3752,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -3755,8 +3759,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { "version": "1.5.4", @@ -4472,8 +4475,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decode-uri-component": { "version": "0.2.0", @@ -4715,6 +4717,11 @@ } } }, + "dijkstrajs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", + "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4870,8 +4877,7 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "emojis-list": { "version": "3.0.0", @@ -5695,7 +5701,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -5842,8 +5847,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-stream": { "version": "4.1.0", @@ -6825,8 +6829,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { "version": "4.0.1", @@ -7661,7 +7664,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -8966,7 +8968,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -8975,7 +8976,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -9001,8 +9001,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pacote": { "version": "9.5.12", @@ -9284,8 +9283,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -9378,6 +9376,11 @@ "find-up": "^3.0.0" } }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -10542,6 +10545,24 @@ "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, + "qrcode": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.2.tgz", + "integrity": "sha512-eR6RgxFYPDFH+zFLTJKtoNP/RlsHANQb52AUmQ2bGDPMuUw7jJb0F+DNEgx7qQGIElrbFxWYMc0/B91zLZPF9Q==", + "requires": { + "dijkstrajs": "^1.0.1", + "isarray": "^2.0.1", + "pngjs": "^3.3.0", + "yargs": "^13.2.4" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -10893,14 +10914,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "requires-port": { "version": "1.0.0", @@ -11431,8 +11450,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-immediate-shim": { "version": "1.0.1", @@ -12213,7 +12231,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -12223,14 +12240,12 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -14117,8 +14132,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "worker-farm": { "version": "1.7.0", @@ -14164,7 +14178,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, "requires": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -14174,14 +14187,12 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -14244,8 +14255,7 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "4.0.0", @@ -14257,7 +14267,6 @@ "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -14275,7 +14284,6 @@ "version": "13.1.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -14284,8 +14292,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" } } }, diff --git a/package.json b/package.json index 6972949..a7dfb9e 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@angular/platform-browser": "~10.1.5", "@angular/platform-browser-dynamic": "~10.1.5", "@angular/router": "~10.1.5", + "angularx-qrcode": "^10.0.11", "openpgp": "^4.10.8", "rxjs": "~6.6.0", "tslib": "^2.0.0", diff --git a/src/.vscode/settings.json b/src/.vscode/settings.json new file mode 100644 index 0000000..198e71e --- /dev/null +++ b/src/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "spellright.language": [ + "English (British)", + "German_de_DE" + ], + "spellright.documentTypes": [ + "html", + "markdown", + "latex", + "plaintext" + ] +} \ No newline at end of file diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 82df071..52682b6 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -2,10 +2,17 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { AuthGuard, AuthUpdateGuard, AuthenticatedGuard, AnonymousGuard } from './auth/auth.guard'; -import { HomeComponent } from './pages/home/home.component'; +import { HomeComponent, ImprintComponent, PrivacyPolicyComponent } from './pages/home/home.component'; +import { HomeClubComponent } from './pages/home/club/home-club.component'; +import { HomeGeneralComponent } from './pages/home/general/home-general.component'; +import { HomePrivacyComponent } from './pages/home/privacy/home-privacy.component'; +import { HomeServicesComponent } from './pages/home/services/home-services.component'; import { LoginComponent } from './pages/login/login.component'; +import { LoginTotpComponent } from './pages/login-totp/login-totp.component'; import { FormLoginComponent } from './pages/form-login/form-login.component'; +import { FormLoginTotpComponent } from './pages/form-login-totp/form-login-totp.component'; import { PasswordComponent } from './pages/password/password.component'; +import { PasswordResetComponent } from './pages/password-reset/password-reset.component'; import { AccountComponent } from './pages/account/account.component'; import { RegisterComponent } from './pages/register/register.component'; import { TokensComponent } from './pages/tokens/tokens.component'; @@ -14,26 +21,33 @@ import { InfoComponent } from './pages/account/info/info.component'; import { VoucherComponent } from './pages/account/voucher/voucher.component'; import { SecurityComponent } from './pages/account/security/security.component'; import { UnavailableComponent } from './pages/unavailable/unavailable.component'; -import { NotfoundComponent } from './pages/notfound/notfound.component'; +import { NotfoundComponent } from './pages/notfound/notfound.component'; const routes: Routes = [ - { path: '', component: HomeComponent, canActivate: [AuthUpdateGuard], pathMatch: 'full', runGuardsAndResolvers: 'always' }, + { path: '', redirectTo: "/general", pathMatch: 'full' }, + { + path: '', component: HomeComponent, canActivate: [AuthUpdateGuard], runGuardsAndResolvers: 'always', children: [ + { path: 'general', component: HomeGeneralComponent, canActivate: [AuthUpdateGuard] }, + { path: 'privacy', component: HomePrivacyComponent, canActivate: [AuthUpdateGuard] }, + { path: 'services', component: HomeServicesComponent, canActivate: [AuthUpdateGuard] }, + { path: 'club', component: HomeClubComponent, canActivate: [AuthUpdateGuard] }, + ] + }, + { path: 'imprint', component: ImprintComponent, canActivate: [AuthUpdateGuard] }, + { path: 'privacy-policy', component: PrivacyPolicyComponent, canActivate: [AuthUpdateGuard] }, { path: 'login', component: LoginComponent, canActivate: [AnonymousGuard] }, + { path: 'login/totp', component: LoginTotpComponent, canActivate: [AnonymousGuard] }, { path: 'external-login', component: FormLoginComponent, canActivate: [AnonymousGuard] }, + { path: 'external-login/totp', component: FormLoginTotpComponent, canActivate: [AnonymousGuard] }, { path: 'password', component: PasswordComponent, canActivate: [AnonymousGuard] }, + { path: 'password-reset', component: PasswordResetComponent, canActivate: [AnonymousGuard] }, { path: 'apps', component: AppsComponent, canActivate: [AuthenticatedGuard] }, { path: 'account', component: AccountComponent, canActivate: [AuthenticatedGuard], children: [ - { - path: 'info', component: InfoComponent, canActivate: [AuthenticatedGuard] - }, - { - path: 'voucher', component: VoucherComponent, canActivate: [AuthenticatedGuard] - }, - { - path: 'security', component: SecurityComponent, canActivate: [AuthenticatedGuard] - } + { path: 'info', component: InfoComponent, canActivate: [AuthenticatedGuard] }, + { path: 'voucher', component: VoucherComponent, canActivate: [AuthenticatedGuard] }, + { path: 'security', component: SecurityComponent, canActivate: [AuthenticatedGuard] } ] }, { path: 'register', component: RegisterComponent, canActivate: [AnonymousGuard] }, diff --git a/src/app/app.component.html b/src/app/app.component.html index 1de4e29..c21ac88 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,20 +1,21 @@ - + menu + - we.bstly + we.bstly - - {{'locale.en.long' | i18n}} - {{'locale.de-informal.long' | i18n}} + {{'locale.' + locale + '.long' | i18n}} @@ -23,7 +24,7 @@ - + home {{'home' | i18n}} @@ -35,10 +36,10 @@ widgets {{'apps' | i18n}} - + card_giftcard {{'tokens.redeem' | i18n}} - + shopping_cart {{'tokens.get' | i18n}}open_in_new @@ -46,6 +47,17 @@ exit_to_app {{'logout' | i18n}} + + + + + + {{'imprint' | i18n}} + + + {{'privacy-policy' | i18n}} + + diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 4facd95..e69de29 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -1,33 +0,0 @@ -.spacer { - flex: 1 1 auto; -} - -mat-sidenav-container { - height: 100%; - max-height: 100%; -} - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; - margin-bottom: 15px; - - @media screen and (min-width: 576px) { - width: 540px; - } - - @media screen and (min-width: 768px) { - width: 580px; - } - - @media screen and (min-width: 992px) { - width: 820px; - } - - @media screen and (min-width: 1200px) { - width: 1000px; - } -} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 6221dad..3b68b62 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -16,11 +16,12 @@ export class AppComponent { opened = true; title = 'we.bstly'; currentLocale: String; + locales; auth; constructor(private i18n: I18nService, private authService: AuthService, private router: Router, private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) { this.currentLocale = this.i18n.getLocale(); - + this.locales = this.i18n.getLocales(); this.authService.auth.subscribe(data => { this.auth = data; }) @@ -45,7 +46,6 @@ export class AppComponent { logout() { this.authService.logout().subscribe(data => { this.router.navigate([""]); - console.log("ja?"); }) } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index e52a715..5b81099 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -6,24 +6,31 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { HttpClientModule, HttpInterceptor, HttpHandler, HttpRequest, HTTP_INTERCEPTORS } from '@angular/common/http'; import { MaterialModule } from './material/material.module'; +import { QRCodeModule } from 'angularx-qrcode'; import { I18nPipe } from './utils/i18n.pipe'; -import { HomeComponent } from './pages/home/home.component'; +import { HomeComponent, ImprintComponent, PrivacyPolicyComponent } from './pages/home/home.component'; +import { HomeClubComponent } from './pages/home/club/home-club.component'; +import { HomeGeneralComponent } from './pages/home/general/home-general.component'; +import { HomePrivacyComponent } from './pages/home/privacy/home-privacy.component'; +import { HomeServicesComponent } from './pages/home/services/home-services.component'; import { AccountComponent } from './pages/account/account.component'; import { AppsComponent } from './pages/apps/apps.component'; import { AppComponent } from './app.component'; import { LoginComponent } from './pages/login/login.component'; +import { LoginTotpComponent } from './pages/login-totp/login-totp.component'; import { FormLoginComponent } from './pages/form-login/form-login.component'; +import { FormLoginTotpComponent } from './pages/form-login-totp/form-login-totp.component'; import { TokensComponent } from './pages/tokens/tokens.component'; import { PermissionsComponent } from './ui/permissions/permissions.component'; import { QuotasComponent } from './ui/quotas/quotas.component'; -import { SecurityComponent } from './pages/account/security/security.component'; +import { SecurityComponent, SecurityTotpDialog } from './pages/account/security/security.component'; import { VoucherComponent } from './pages/account/voucher/voucher.component'; import { VoucherDialog } from './pages/account/voucher/voucher.component'; import { InfoComponent } from './pages/account/info/info.component'; import { PasswordComponent } from './pages/password/password.component'; -import { RegisterComponent } from './pages/register/register.component'; -import { RegisterDialog } from './pages/register/register.component'; +import { PasswordResetComponent } from './pages/password-reset/password-reset.component'; +import { RegisterComponent, RegisterDialog } from './pages/register/register.component'; import { UsernameDialog } from './pages/register/username-dialog/username.dialog'; import { UnavailableComponent } from './pages/unavailable/unavailable.component'; import { NotfoundComponent } from './pages/notfound/notfound.component'; @@ -34,7 +41,7 @@ import { I18nService } from './services/i18n.service'; export function init_app(i18n: I18nService) { - return () => i18n.fetch(i18n.getLocale()); + return () => i18n.fetch(i18n.getLocale()).then(response => { }, error => { }); } @Injectable() @@ -52,19 +59,27 @@ export class XhrInterceptor implements HttpInterceptor { declarations: [ I18nPipe, AppComponent, - HomeComponent, + HomeComponent, ImprintComponent, PrivacyPolicyComponent, + HomeClubComponent, + HomeGeneralComponent, + HomePrivacyComponent, + HomeServicesComponent, AccountComponent, LoginComponent, + LoginTotpComponent, FormLoginComponent, + FormLoginTotpComponent, TokensComponent, AppsComponent, PermissionsComponent, QuotasComponent, SecurityComponent, + SecurityTotpDialog, VoucherComponent, VoucherDialog, InfoComponent, PasswordComponent, + PasswordResetComponent, RegisterComponent, RegisterDialog, UsernameDialog, @@ -80,6 +95,7 @@ export class XhrInterceptor implements HttpInterceptor { HttpClientModule, FormsModule, ReactiveFormsModule, + QRCodeModule, ], exports: [MaterialModule], providers: [{ provide: APP_INITIALIZER, useFactory: init_app, deps: [I18nService], multi: true }, { provide: HTTP_INTERCEPTORS, useClass: XhrInterceptor, multi: true }], diff --git a/src/app/pages/account/account.component.html b/src/app/pages/account/account.component.html index d409c01..8a94b2e 100644 --- a/src/app/pages/account/account.component.html +++ b/src/app/pages/account/account.component.html @@ -1,4 +1,4 @@ -

{{'greet' | i18n:auth.name}} sentiment_satisfied_alt +

{{'greet' | i18n:auth.name}} sentiment_satisfied_alt