Silvan
93e941a475
fix: Improve search user grants ( #988 )
...
* fix(management): search user grants with granted
* fix(auth): handle user grant project owner
* fix: migration
2020-11-19 14:13:07 +01:00
Fabi
a40ec1f25b
fix: audience in create token ( #985 )
2020-11-18 17:11:37 +01:00
Livio Amstutz
16cd7388ce
fix: handle LoginPolicyRemoved in auth ( #982 )
2020-11-18 15:18:03 +01:00
Livio Amstutz
b9be5f4e11
fix: handle disabled mfa types correctly during login ( #979 )
...
* fix: handle disabled mfa types during login correctly
* fix: add 2fa to default login policy
* fix: setup
* Update internal/setup/step7.go
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
2020-11-18 12:56:24 +01:00
Fabi
119ddbfa09
fix: new build ( #977 )
2020-11-17 17:29:41 +01:00
Livio Amstutz
376fba72d8
fix: user init mail (for wrong email) ( #891 )
...
* add resendInitialMail
* disable email notifications (when not initialised)
* fix resend init mail
* add tests
* cleanup
* cleanup
* fix tests
* add resend trigger, dialog
* refactor contact component, add sendinitmail fnc
* skip email if empty
* reload user on phone email changes, i18n warndialog on dl
* lint
* rebuild mgmt proto
* remove initial focus
* Update console/src/assets/i18n/de.json
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
2020-11-16 11:43:22 +01:00
Fabi
78c0cf2f57
fix: add and verified projectID in audience ( #957 )
...
* feat: new scope for project id in aud
* feat: add doc
* feat: projectid endpoint
* feat: remove handle Proejct id
* fix: remove go.mod replace
* fix: add project id to aud
* fix: update oidc version
* fix: change project id scope
* update projectID scope to current usage
* typo: ZITADEL uppercase
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
2020-11-16 10:54:48 +01:00
Silvan
966e3850ed
fix(changes): decide if human or machine modifier ( #953 )
2020-11-12 17:01:30 +01:00
Fabi
202aae4954
feat: mfa policy ( #913 )
...
* feat: add mfa to login policy
* feat: add mfa to login policy
* feat: add mfa to login policy
* feat: add mfa to login policy
* feat: add mfa to login policy on org
* feat: add mfa to login policy on org
* feat: append events on policy views
* feat: iam login policy mfa definition
* feat: login policies on orgs
* feat: configured mfas in login process
* feat: configured mfas in login process
* Update internal/ui/login/static/i18n/en.yaml
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* fix: rename software and hardware mfas
* fix: pr requests
* fix user mfa
* fix: test
* fix: oidc version
* fix: oidc version
* fix: proto gen
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
Co-authored-by: Max Peintner <max@caos.ch>
2020-11-04 11:26:10 +01:00
Fabi
51417be35d
feat: primary domain ( #936 )
...
* fix: primary domain
* fix: remove comment
* fix: oidc version
2020-11-03 10:50:03 +01:00
Fabi
b79661d66e
fix: add search params for user grants ( #915 )
2020-11-03 07:52:49 +01:00
Livio Amstutz
6a91cfe5a6
fix: email styling ( #918 )
2020-10-28 15:26:20 +01:00
Silvan
b9fdcb53a2
fix: auth app handler with projectEvents ( #917 )
2020-10-28 11:19:10 +01:00
Silvan
e686268e81
fix: flags on application view ( #910 )
...
* wg24q
* fix: set ProjectRoleCheck and ProjectRoleAssertion on added application
2020-10-27 15:53:36 +01:00
Livio Amstutz
524a6d4467
fix: type conversation ( #894 )
2020-10-26 08:38:48 +01:00
Livio Amstutz
274dce2c6a
fix(notification): check both user event versions and if code expired ( #887 )
2020-10-21 16:42:29 +02:00
Livio Amstutz
b3f68c8f48
feat: add tracing interceptors to login and oidc ( #764 )
...
* add tracing interceptors to login and oidc
* add some tracing spans
* trace login calls
* add some spans
* add some spans (change password)
* add some more tracing in oauth/oidc
* revert org exists
* Merge branch 'master' into http-tracing
# Conflicts:
# internal/api/oidc/auth_request.go
# internal/api/oidc/client.go
# internal/auth/repository/eventsourcing/eventstore/auth_request.go
# internal/auth/repository/eventsourcing/eventstore/user.go
# internal/authz/repository/eventsourcing/eventstore/token_verifier.go
# internal/authz/repository/eventsourcing/view/token.go
# internal/user/repository/eventsourcing/eventstore.go
2020-10-21 10:18:34 +02:00
Michael Waeger
42384763d1
feat: Private label email policy ( #813 )
...
* Label Policy added
* save
* chore: update docs action
* Save
* Save
* Get colors from DB
* Variables inserted
* Get images from global directory.
* Add tests
* Add tests
* Corrections from mergerequest
* Corrections from mergerequest
* Test corrected.
* Added colors to all notifications.
* Added colors to
Corrected text and formatting.all notifications.
* Spelling error corrected.
* fix: tests
* Merge Branch corrected.
* Step6 added
* Corrections from mergerequest
* fix: generate management
* Formatted texts.
* fix: migrations
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
2020-10-20 19:10:23 +02:00
Fabi
57a3ccc91b
fix: handle login policy removed ( #882 )
2020-10-20 15:54:26 +02:00
Fabi
7e56ace9d9
fix: idp provider handler ( #874 )
...
* fix: idp provider handler
* fix: idp provider search
* fix: idp provider search
* fix: error handling
* fix: error handling
* fix: fix read config
2020-10-20 14:26:19 +02:00
Fabi
46bc987b28
fix: idp changes ( #872 )
2020-10-20 08:23:56 +02:00
Fabi
4eb380a825
fix: IDP login button styles ( #869 )
...
* fix: styling type on idp
* fix: google styling
* fix: google styling
* fix: google styling
* fix: remove logo src from angular
* fix: pr requests
* fix drop column migration
* fix: drop column migration
* fix: grant id
2020-10-19 17:10:02 +02:00
Fabi
bb9747923c
fix: cascade remove external login ( #871 )
...
* fix: cascade remove external login
* fix: tests
2020-10-19 16:28:06 +02:00
Fabi
c3b4c3f264
fix: translations and oidc package update ( #845 )
...
* fix: translation
* fix: translation
* fix: translation
* fix: UserInfo with JWT access token
* fix: dependencies
* fix: dependencies
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
2020-10-16 13:15:19 +02:00
Livio Amstutz
a321d850ae
feat: project roles ( #843 )
...
* fix logging
* token verification
* feat: assert roles
* feat: add project role assertion on project and token type on app
* id and access token role assertion
* add project role check
* user grant required step in login
* update library
* fix merge
* fix merge
* fix merge
* update oidc library
* fix tests
* add tests for GrantRequiredStep
* add missing field ProjectRoleCheck on project view model
* fix project create
* fix project create
2020-10-16 07:49:38 +02:00
Fabi
265b491696
feat: tokens on user aggregate ( #837 )
...
* fix: fix remove policies in spoolers
* fix: reread of token by id
* fix: update oidc package
* fix: possible nil pointer on token split
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
2020-10-15 13:52:41 +02:00
Fabi
fbb30840f1
feat: policies on aggregates ( #799 )
...
* feat: move pw policy
* feat: default pw complexity policy
* fix: org password complexity policy
* fix: org password complexity policy
* fix: pw complexity policy with setup
* fix: age and lockout policies on aggregates
* fix: migration
* fix: org iam policy
* fix: org iam policy
* fix: org iam policy
* fix: tests
* fix: policy request
* fix: merge master
* fix(console): policies frontend (#817 )
* fix policy build
* fix: age, complexity, lockout policies
* fix: ready return err of setup not done
* fix: fix remove policies in spoolers
* fix: fix remove policies in spoolers
* feat(console): policy settings for iam and org (#824 )
* fix policy build
* fix: age, complexity, lockout policies
* fix pwd complexity
* policy remove action
* add imports
* fix accounts card, enable mgmt login policy
* lint
* add iam policy to admin
* toasts, i18n, show default
* routing, i18n
* reset policy, toast i18n, cleanup, routing
* policy delete permission
* lint style
* delete iam policy
* delete non project from grid list, i18n
* lint ts, style
* fix: remove instead delete
* feat(console): delete external idp from user (#835 )
* dialog i18n, delete column and function
* dialog i18n
* fix rm button
* Update console/src/assets/i18n/de.json
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* Update console/src/assets/i18n/de.json
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* fix: revert env, rename policy, remove comments
* fix: lowercase sich
* fix: pr requests
* Update internal/iam/repository/eventsourcing/eventstore_test.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* fix: tests
* fix: tests
* fix(console): policies (#839 )
* fix: nil pointer on get userdata (#815 )
* fix: external login (#818 )
* fix: external login
* fix: external login
* feat(console): delete user (#819 )
* add action col to user table, i18n
* delete user from detail component
* lint
* fix(console): cleanup user detail and member components, user/me redirect, permission guards, filter, org policy guard, user table, scss cleanup (#808 )
* fix: remove user.write guard for filtering
* border color
* fix user routing from member tables
* idp detail layout
* generic contact component
* fix redirect to auth user, user grant disable
* disable policy action without permission, i18n
* user-create flex fix, contact ng-content
* rm unused styles
* sidenav divider
* lint
* chore(deps-dev): bump @angular/cli from 10.1.3 to 10.1.4 in /console (#806 )
* fix: user session with external login (#797 )
* fix: user session with external login
* fix: tests
* fix: tests
* fix: change idp config name
* fix(container): stop copying / and instead only copy zitadel (#691 )
* chore: stop copying / and instead only copy zitadel
* Update Dockerfile
* Update release.yml
* enable anchors debug
* fix(container): don't copy alpine content into scratch execpt pwd
* chore: remove need step
* merge master
* chore(deps-dev): bump @angular/cli from 10.1.3 to 10.1.4 in /console
Bumps [@angular/cli](https://github.com/angular/angular-cli ) from 10.1.3 to 10.1.4.
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Commits](https://github.com/angular/angular-cli/compare/v10.1.3...v10.1.4 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps-dev): bump @angular/language-service from 10.1.3 to 10.1.4 in /console (#805 )
* fix: user session with external login (#797 )
* fix: user session with external login
* fix: tests
* fix: tests
* fix: change idp config name
* fix(container): stop copying / and instead only copy zitadel (#691 )
* chore: stop copying / and instead only copy zitadel
* Update Dockerfile
* Update release.yml
* enable anchors debug
* fix(container): don't copy alpine content into scratch execpt pwd
* chore: remove need step
* merge master
* chore(deps-dev): bump @angular/language-service in /console
Bumps [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service ) from 10.1.3 to 10.1.4.
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/10.1.4/packages/language-service )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps-dev): bump codelyzer from 6.0.0 to 6.0.1 in /console (#804 )
* fix: user session with external login (#797 )
* fix: user session with external login
* fix: tests
* fix: tests
* fix: change idp config name
* fix(container): stop copying / and instead only copy zitadel (#691 )
* chore: stop copying / and instead only copy zitadel
* Update Dockerfile
* Update release.yml
* enable anchors debug
* fix(container): don't copy alpine content into scratch execpt pwd
* chore: remove need step
* merge master
* chore(deps-dev): bump codelyzer from 6.0.0 to 6.0.1 in /console
Bumps [codelyzer](https://github.com/mgechev/codelyzer ) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/mgechev/codelyzer/releases )
- [Changelog](https://github.com/mgechev/codelyzer/blob/master/CHANGELOG.md )
- [Commits](https://github.com/mgechev/codelyzer/commits/6.0.1 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps-dev): bump @angular-devkit/build-angular from 0.1000.8 to 0.1001.4 in /console (#803 )
* fix: user session with external login (#797 )
* fix: user session with external login
* fix: tests
* fix: tests
* fix: change idp config name
* fix(container): stop copying / and instead only copy zitadel (#691 )
* chore: stop copying / and instead only copy zitadel
* Update Dockerfile
* Update release.yml
* enable anchors debug
* fix(container): don't copy alpine content into scratch execpt pwd
* chore: remove need step
* merge master
* chore(deps-dev): bump @angular-devkit/build-angular in /console
Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli ) from 0.1000.8 to 0.1001.4.
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Commits](https://github.com/angular/angular-cli/commits )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>
* chore(deps): bump uuid from 8.3.0 to 8.3.1 in /console (#802 )
* fix: user session with external login (#797 )
* fix: user session with external login
* fix: tests
* fix: tests
* fix: change idp config name
* fix(container): stop copying / and instead only copy zitadel (#691 )
* chore: stop copying / and instead only copy zitadel
* Update Dockerfile
* Update release.yml
* enable anchors debug
* fix(container): don't copy alpine content into scratch execpt pwd
* chore: remove need step
* merge master
* chore(deps): bump uuid from 8.3.0 to 8.3.1 in /console
Bumps [uuid](https://github.com/uuidjs/uuid ) from 8.3.0 to 8.3.1.
- [Release notes](https://github.com/uuidjs/uuid/releases )
- [Changelog](https://github.com/uuidjs/uuid/blob/master/CHANGELOG.md )
- [Commits](https://github.com/uuidjs/uuid/compare/v8.3.0...v8.3.1 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* create memberstable as common component
* iam member cleanup
* iam + org m table, user table service user avatar
* toast config
* fix selection emitter
* fix project grant table width
* project grant members refactor
* theme optimizations
* member table col delete
* lint
* fix table row color
* refactor grey color
* lint scss
* org list redirect on click, fix user table undef
* refresh table after grant add
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
* fix(console): intercept navigator.language, set browser lang as default for user without explicit setting, user table outline, member create dialog import (#820 )
* i18n interceptor, set language to browser lang
* nullcheck
* rm external idp log
* fix module imports, rm user displayname from i18n
* Update console/src/assets/i18n/de.json
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* fix: delete external idps from users (#822 )
* fix(console): permission regex, account switcher null check, restrict app and member create access (#821 )
* fix member table disable, gerneal regexp
* fix user session card, app disable
* memberships max count
* fix policy permissions
* permission check for member add dialog
* lint
* rm accounts log
* rm id regex
* fix: handle usermemberships on project and project grant delete (#825 )
* fix: go handler
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
* fix: tests
* fix: not needed error handling
Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Silvan <silvan.reusser@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
2020-10-15 10:27:13 +02:00
Fabi
318e2c5e44
fix: reset external login verification on logout ( #840 )
2020-10-15 09:37:12 +02:00
Fabi
905ee1c68a
fix: handle usermemberships on project and project grant delete ( #825 )
2020-10-13 07:46:44 +02:00
Fabi
8fe635d3fd
fix: delete external idps from users ( #822 )
2020-10-09 11:07:25 +02:00
Fabi
56d5704749
fix: external login ( #818 )
...
* fix: external login
* fix: external login
2020-10-07 16:29:56 +02:00
Fabi
a19b4d2659
fix: nil pointer on get userdata ( #815 )
2020-10-07 10:46:22 +02:00
Fabi
9ad547185c
feat: remove user ( #812 )
...
* feat: remove user
* feat: handle delete state on user by id
* feat: handle delete state on project by id
2020-10-07 08:16:42 +02:00
Silvan
8278efc131
fix(eventstore): check if creation date is not zero ( #811 )
2020-10-06 07:26:09 +02:00
Fabi
f939eab133
fix: check existing idp ( #809 )
...
* fix: logs
* Update Dockerfile
* Fallback to old Docker file
* fix: for loop
* fix: for loop
* fix: for loop
* fix: remove logs
* fix: remove logs
Co-authored-by: Florian Forster <florian@caos.ch>
2020-10-05 17:14:08 +02:00
Fabi
198370325d
fix: user session with external login ( #797 )
...
* fix: user session with external login
* fix: tests
* fix: tests
* fix: change idp config name
2020-10-02 08:02:09 +02:00
Silvan
bdcf9fcc5c
fix(authz): fix user grant handler ( #795 )
2020-09-30 10:29:41 +02:00
Fabi
83b0ac1fdb
fix: idps ( #777 )
...
* fix: update client secret, skip passwordsteps only if login not if linking
* fix: global policy for register
* fix: scope handling
* fix: back after error
* fix: change org id scope to primary domain
* fix: check if primarydomain empty
* fix: local sh
* fix: disable buttons on org login policy
2020-09-28 09:29:41 +02:00
Silvan
3e1204524e
fix: multiple setup steps ( #773 )
...
* fix: multiple setup steps
* fix: test set up started
* fix: possible nil pointers in setup
* fix: validate executed step
2020-09-24 11:38:28 +02:00
Fabi
0bd27bc8e4
fix: add prompt on oidc rp, fix idp and login policy in console ( #769 )
...
* fix: add prompt on oidc rp
* fix: add prompt on oidc rp
* fix: translation
* fix: translation
* fix: not existing login policy
* fix: login policy
* fix: identity provider detail
* fix: idp update
* fix: idps in login policy
* fix: lint
* fix: scss
* fix: external idps on auth user detail
* fix: idp create mapping fields
* fix: remove idp provider
* fix: angular lint
* fix: login policy view
* fix: translations
2020-09-23 16:52:19 +02:00
Livio Amstutz
9887e897ee
fix: only show external login text when providers available ( #768 )
2020-09-21 14:06:54 +02:00
Livio Amstutz
da8f243129
fix: marshal of user info address ( #767 )
2020-09-21 12:55:39 +02:00
Fabi
108f6b3545
feat: external idps on user ( #755 )
...
* feat: show external idps on user
* feat: show external idps on user
* fix: angular linting
* fix: display Name
* fix: display Name email
2020-09-18 17:00:38 +02:00
Silvan
ee0383cae8
refactor: spooled handler ( #752 )
...
* refactor: spooled handler
* fix(spooler): test locked channel
2020-09-18 13:39:28 +02:00
Fabi
320ddfa46d
feat: Identity brokering ( #730 )
...
* feat: add/ remove external idps
* feat: external idp add /remove
* fix: auth proto
* fix: handle login
* feat: loginpolicy on authrequest
* feat: idp providers on login
* feat: link external idp
* fix: check login policy on check username
* feat: add mapping fields for idp config
* feat: use user org id if existing
* feat: use user org id if existing
* feat: register external user
* feat: register external user
* feat: user linking
* feat: user linking
* feat: design external login
* feat: design external login
* fix: tests
* fix: regenerate login design
* feat: next step test linking process
* feat: next step test linking process
* feat: cascade remove external idps on user
* fix: tests
* fix: tests
* feat: external idp requsts on users
* fix: generate protos
* feat: login styles
* feat: login styles
* fix: link user
* fix: register user on specifig org
* fix: user linking
* fix: register external, linking auto
* fix: remove unnecessary request from proto
* fix: tests
* fix: new oidc package
* fix: migration version
* fix: policy permissions
* Update internal/ui/login/static/i18n/en.yaml
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* Update internal/ui/login/static/i18n/en.yaml
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* Update internal/ui/login/handler/renderer.go
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* Update internal/ui/login/handler/renderer.go
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* fix: pr requests
* Update internal/ui/login/handler/link_users_handler.go
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* fix: pr requests
* fix: pr requests
* fix: pr requests
* fix: login name size
* fix: profile image light
* fix: colors
* fix: pr requests
* fix: remove redirect uri validator
* fix: remove redirect uri validator
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
2020-09-18 13:26:28 +02:00
Silvan
e7b499794d
fix(setup): set first org owner as project owner ( #753 )
2020-09-17 16:48:14 +02:00
Silvan
845026e43f
fix(spooler): memory leak ( #751 )
...
* fix: dependecies
* fix: one of two memory leaks found
* fix: remove log
2020-09-17 09:12:56 +02:00
Silvan
5a8cafcae5
fix: JWT Profile ( #748 )
...
* fix: correct env var for tracing type
* fix: local env tracing
* fix: key in detail as string
* fix: implement storage
* fix: machine key by id
fix: store public key as bytes instead of crypto value
* update oidc pkg
* dont check origins for service account tokens
* fix: scopes
* fix: dependencies
* fix: dependencies
* fix: remove unused code
* fix: variable naming
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
2020-09-17 08:49:33 +02:00
Silvan
71abc4f077
test: machine ( #683 )
...
* test: machine
* test: better naming
2020-09-15 15:04:02 +02:00
Silvan
eefdd17478
fix(usergrant): delete in handler search for correct key ( #732 )
2020-09-11 16:01:03 +02:00