Livio Spring
ec222a13d7
fix(oidc): IDP and passwordless user auth methods ( #7998 )
...
# Which Problems Are Solved
As already mentioned and (partially) fixed in #7992 we discovered,
issues with v2 tokens that where obtained through an IDP, with
passwordless authentication or with password authentication (wihtout any
2FA set up) using the v1 login for zitadel API calls
- (Previous) authentication through an IdP is now correctly treated as
auth method in case of a reauth even when the user is not redirected to
the IdP
- There were some cases where passwordless authentication was
successfully checked but not correctly set as auth method, which denied
access to ZITADEL API
- Users with password and passwordless, but no 2FA set up which
authenticate just wich password can access the ZITADEL API again
Additionally while testing we found out that because of #7969 the login
UI could completely break / block with the following error:
`sql: Scan error on column index 3, name "state": converting NULL to
int32 is unsupported (Internal)`
# How the Problems Are Solved
- IdP checks are treated the same way as other factors and it's ensured
that a succeeded check within the configured timeframe will always
provide the idp auth method
- `MFATypesAllowed` checks for possible passwordless authentication
- As with the v1 login, the token check now only requires MFA if the
policy is set or the user has 2FA set up
- UserAuthMethodsRequirements now always uses the correctly policy to
check for MFA enforcement
- `State` column is handled as nullable and additional events set the
state to active (as before #7969 )
# Additional Changes
- Console now also checks for 403 (mfa required) errors (e.g. after
setting up the first 2FA in console) and redirects the user to the login
UI (with the current id_token as id_token_hint)
- Possible duplicates in auth methods / AMRs are removed now as well.
# Additional Context
- Bugs were introduced in #7822 and # and 7969 and only part of a
pre-release.
- partially already fixed with #7992
- Reported internally.
2024-05-28 08:59:49 +00:00
Livio Spring
fb162a7d75
fix(login): improve auth handlers ( #7969 )
...
# Which Problems Are Solved
During the implementation of #7486 it was noticed, that projections in
the `auth` database schema could be blocked.
Investigations suggested, that this is due to the use of
[GORM](https://gorm.io/index.html ) and it's inability to use an existing
(sql) transaction.
With the improved / simplified handling (see below) there should also be
a minimal improvement in performance, resp. reduced database update
statements.
# How the Problems Are Solved
The handlers in `auth` are exchanged to proper (sql) statements and gorm
usage is removed for any writing part.
To further improve / simplify the handling of the users, a new
`auth.users3` table is created, where only attributes are handled, which
are not yet available from the `projections.users`,
`projections.login_name` and `projections.user_auth_methods` do not
provide. This reduces the events handled in that specific handler by a
lot.
# Additional Changes
None
# Additional Context
relates to #7486
2024-05-22 15:26:02 +00:00
Silvan
aa407c3c3e
fix(auth): optimise user sessions ( #7199 )
...
* fix(auth): start optimise user sessions
* reduce and query user sessions directly without gorm statements
* cleanup
* cleanup
* fix requested changes
---------
Co-authored-by: Livio Spring <livio.a@gmail.com>
2024-01-30 15:17:54 +00:00
Tim Möhlmann
f680dd934d
refactor: rename package errors to zerrors ( #7039 )
...
* chore: rename package errors to zerrors
* rename package errors to gerrors
* fix error related linting issues
* fix zitadel error assertion
* fix gosimple linting issues
* fix deprecated linting issues
* resolve gci linting issues
* fix import structure
---------
Co-authored-by: Elio Bischof <elio@zitadel.com>
2023-12-08 15:30:55 +01:00
Silvan
b5564572bc
feat(eventstore): increase parallel write capabilities ( #5940 )
...
This implementation increases parallel write capabilities of the eventstore.
Please have a look at the technical advisories: [05](https://zitadel.com/docs/support/advisory/a10005 ) and [06](https://zitadel.com/docs/support/advisory/a10006 ).
The implementation of eventstore.push is rewritten and stored events are migrated to a new table `eventstore.events2`.
If you are using cockroach: make sure that the database user of ZITADEL has `VIEWACTIVITY` grant. This is used to query events.
2023-10-19 12:19:10 +02:00
Livio Spring
7c494fd219
feat(login): add OTP (email and sms) ( #6353 )
...
* feat: login with otp
* fix(i18n): japanese translation
* add missing files
* fix provider change
* add event types translations to en
* add tests
* resourceOwner
* remove unused handler
* fix: secret generators and add comments
* add setup step
* rename
* linting
* fix setup
* improve otp handling
* fix autocomplete
* translations for login and notifications
* translations for event types
* changes from review
* check selected mfa type
2023-08-15 12:47:05 +00:00
Livio Spring
a1942ecdaa
feat(api): add and remove OTP (SMS and email) ( #6295 )
...
* refactor: rename otp to totp
* feat: add otp sms and email
* implement tests
2023-08-02 18:57:53 +02:00
Livio Spring
d3e403f645
perf: reduce events read from eventstore ( #6280 )
...
* fix: events query user
* fix: events query user
* user events query
* fix tests
* fix query
* cleanup
---------
Co-authored-by: Fabienne <fabienne.gerschwiler@gmail.com>
2023-07-27 12:10:19 +00:00
Silvan
f3e6f3b23b
feat: remove org ( #4148 )
...
* feat(command): remove org
* refactor: imports, unused code, error handling
* reduce org removed in action
* add org deletion to projections
* add org removal to projections
* add org removal to projections
* org removed projection
* lint import
* projections
* fix: table names in tests
* fix: table names in tests
* logging
* add org state
* fix(domain): add Owner removed to object details
* feat(ListQuery): add with owner removed
* fix(org-delete): add bool to functions to select with owner removed
* fix(org-delete): add bools to user grants with events to determine if dependencies lost owner
* fix(org-delete): add unit tests for owner removed and org removed events
* fix(org-delete): add handling of org remove for grants and members
* fix(org-delete): correction of unit tests for owner removed
* fix(org-delete): update projections, unit tests and get functions
* fix(org-delete): add change date to authnkeys and owner removed to org metadata
* fix(org-delete): include owner removed for login names
* fix(org-delete): some column fixes in projections and build for queries with owner removed
* indexes
* fix(org-delete): include review changes
* fix(org-delete): change user projection name after merge
* fix(org-delete): include review changes for project grant where no project owner is necessary
* fix(org-delete): include auth and adminapi tables with owner removed information
* fix(org-delete): cleanup username and orgdomain uniqueconstraints when org is removed
* fix(org-delete): add permissions for org.remove
* remove unnecessary unique constraints
* fix column order in primary keys
* fix(org-delete): include review changes
* fix(org-delete): add owner removed indexes and chang setup step to create tables
* fix(org-delete): move PK order of instance_id and change added user_grant from review
* fix(org-delete): no params for prepareUserQuery
* change to step 6
* merge main
* fix(org-delete): OldUserName rename to private
* fix linting
* cleanup
* fix: remove org test
* create prerelease
* chore: delete org-delete as prerelease
Co-authored-by: Stefan Benz <stefan@caos.ch>
Co-authored-by: Livio Spring <livio.a@gmail.com>
Co-authored-by: Fabi <38692350+hifabienne@users.noreply.github.com>
Co-authored-by: Stefan Benz <46600784+stebenz@users.noreply.github.com>
2022-11-30 17:01:17 +01:00
Livio Amstutz
da1f74fde0
fix: update user sessions after avatar or primary domain change ( #3768 )
2022-06-03 12:37:24 +00:00
Livio Amstutz
41d78ef523
fix: return absolute url for avatar in user sessions ( #3724 )
...
* fix: return absolute url for avatar in user sessions
* fix: refresh token unique constraint
2022-05-30 11:27:52 +00:00
Florian Forster
fa9f581d56
chore(v2): move to new org ( #3499 )
...
* chore: move to new org
* logging
* fix: org rename caos -> zitadel
Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
2022-04-26 23:01:45 +00:00
Livio Amstutz
1305c14e49
feat: handle instanceID in projections ( #3442 )
...
* feat: handle instanceID in projections
* rename functions
* fix key lock
* fix import
2022-04-19 08:26:12 +02:00
Livio Amstutz
87560157c1
fix: change to repository event types and removed unused code ( #3386 )
...
* fix: change to repository event types and removed unused code
* some fixes
* remove unused code
2022-03-31 11:36:26 +02:00
Livio Amstutz
56b916a2b0
feat: projections auto create their tables ( #3324 )
...
* begin init checks for projections
* first projection checks
* debug notification providers with query fixes
* more projections and first index
* more projections
* more projections
* finish projections
* fix tests (remove db name)
* create tables in setup
* fix logging / error handling
* add tenant to views
* rename tenant to instance_id
* add instance_id to all projections
* add instance_id to all queries
* correct instance_id on projections
* add instance_id to failed_events
* use separate context for instance
* implement features projection
* implement features projection
* remove unique constraint from setup when migration failed
* add error to failed setup event
* add instance_id to primary keys
* fix IAM projection
* remove old migrations folder
* fix keysFromYAML test
2022-03-23 09:02:39 +01:00
Livio Amstutz
770994e143
fix: add avatar url in members, user grants, session and oidc responses ( #1852 )
...
* fix: add avatar url in members, user grants, session and oidc responses
* fix auth request tests
2021-06-11 13:20:39 +02:00
Fabi
73d37459bb
feat: label policy ( #1708 )
...
* feat: label policy proto extension
* feat: label policy and activate event
* feat: label policy asset events
* feat: label policy asset commands
* feat: add storage key
* feat: storage key validation
* feat: label policy asset tests
* feat: label policy query side
* feat: avatar
* feat: avatar event
* feat: human avatar
* feat: avatar read side
* feat: font on iam label policy
* feat: label policy font
* feat: possiblity to create bucket on put file
* uplaoder
* login policy logo
* set bucket prefix
* feat: avatar upload
* feat: avatar upload
* feat: use assets on command side
* feat: fix human avatar removed event
* feat: remove human avatar
* feat: mock asset storage
* feat: remove human avatar
* fix(operator): add configuration of asset storage to zitadel operator
* feat(console): private labeling policy (#1697 )
* private labeling component, routing, preview
* font, colors, upload, i18n
* show logo
* fix: uniqueness (#1710 )
* fix: uniqueconstraint to lower
* feat: change org
* feat: org change test
* feat: change org
* fix: tests
* fix: handle domain claims correctly
* feat: update org
Co-authored-by: fabi <fabienne.gerschwiler@gmail.com>
* fix: handle domain claimed event correctly for service users (#1711 )
* fix: handle domain claimed event correctly on user view
* fix: ignore domain claimed events for email notifications
* fix: change org
* handle org changed in read models correctly
* fix: change org in user grant handler
Co-authored-by: fabi <fabienne.gerschwiler@gmail.com>
* fix: correct value (#1695 )
* docs(api): correct link (#1712 )
* upload service
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
Co-authored-by: fabi <fabienne.gerschwiler@gmail.com>
Co-authored-by: Florian Forster <florian@caos.ch>
* feat: fix tests,
* feat: remove assets from label policy
* fix npm, set environment
* lint ts
* remove stylelinting
* fix(operator): add mapping for console with changed unit tests
* fix(operator): add secrets as env variables to pod
* feat: remove human avatar
* fix(operator): add secrets as env variables to pod
* feat: map label policy
* feat: labelpolicy, admin, mgmt, adv settings (#1715 )
* fetch label policy, mgmt, admin service
* feat: advanced beh, links, add, update
* lint ts
* feat: watermark
* feat: remove human avatar
* feat: remove human avatar
* feat: remove human avatar
* feat: remove human avatar
* feat: remove human avatar
* feat: remove human avatar
* feat: remove human avatar
* feat: custom css
* css
* css
* css
* css
* css
* getobject
* feat: dynamic handler
* feat: varibale css
* content info
* css overwrite
* feat: variablen css
* feat: generate css file
* feat: dark mode
* feat: dark mode
* fix logo css
* feat: upload logos
* dark mode with cookie
* feat: handle images in login
* avatar css and begin font
* feat: avatar
* feat: user avatar
* caching of static assets in login
* add avatar.js to main.html
* feat: header dont show logo if no url
* feat: label policy colors
* feat: mock asset storage
* feat: mock asset storage
* feat: fix tests
* feat: user avatar
* feat: header logo
* avatar
* avatar
* make it compatible with go 1.15
* feat: remove unused logos
* fix handler
* fix: styling error handling
* fonts
* fix: download func
* switch to mux
* fix: change upload api to assets
* fix build
* fix: download avatar
* fix: download logos
* fix: my avatar
* font
* fix: remove error msg popup possibility
* fix: docs
* fix: svalidate colors
* rem msg popup from frontend
* fix: email with private labeling
* fix: tests
* fix: email templates
* fix: change migration version
* fix: fix duplicate imports
* fix(console): assets, service url, upload, policy current and preview (#1781 )
* upload endpoint, layout
* fetch current, preview, fix upload
* cleanup private labeling
* fix linting
* begin generated asset handler
* generate asset api in dockerfile
* features for label policy
* features for label policy
* features
* flag for asset generator
* change asset generator flag
* fix label policy view in grpc
* fix: layout, activate policy (#1786 )
* theme switcher up on top
* change layout
* activate policy
* feat(console): label policy back color, layout (#1788 )
* theme switcher up on top
* change layout
* activate policy
* fix overwrite value fc
* reset policy, reset service
* autosave policy, preview desc, layout impv
* layout, i18n
* background colors, inject material styles
* load images
* clean, lint
* fix layout
* set custom hex
* fix content size conversion
* remove font format in generated css
* fix features for assets
* fix(console): label policy colors, image downloads, preview (#1804 )
* load images
* colors, images binding
* lint
* refresh emitter
* lint
* propagate font colors
* upload error handling
* label policy feature check
* add blob in csp for console
* log
* fix: feature edits for label policy, refresh state on upload (#1807 )
* show error on load image, stop spinner
* fix merge
* fix migration versions
* fix assets
* fix csp
* fix background color
* scss
* fix build
* lint scss
* fix statik for console
* fix features check for label policy
* cleanup
* lint
* public links
* fix notifications
* public links
* feat: merge main
* feat: fix translation files
* fix migration
* set api domain
* fix logo in email
* font face in email
* font face in email
* validate assets on upload
* cleanup
* add missing translations
* add missing translations
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
Co-authored-by: Stefan Benz <stefan@caos.ch>
Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Florian Forster <florian@caos.ch>
2021-06-04 14:53:51 +02:00
Livio Amstutz
3f90d620b8
fix: ignore otp.verified v1 event for usersessions ( #1633 )
...
* remove MFAOTPVerified from user session projection
* add tracing for VerifyOIDCClientSecret in commands
* fix test
2021-04-21 13:23:05 +02:00
Fabi
d8e42744b4
fix: move v2 pkgs ( #1331 )
...
* fix: move eventstore pkgs
* fix: move eventstore pkgs
* fix: remove v2 view
* fix: remove v2 view
2021-02-23 15:13:04 +01:00
Livio Amstutz
b183d49761
fix: passwordless ( #1116 )
...
* fix passwordless session handling
* only check passwordless when enabled in policy
* set preferred user name in webauthn
* fix tests
* add passwordless in setup
* fix(console): exclude credentials for passwordless (#1115 )
* fix: exclude creds
* fix i18n type loginpolicy
* fix enter on dialog input
* remove arg
Co-authored-by: Max Peintner <max@caos.ch>
2020-12-17 16:22:27 +01:00
Livio Amstutz
077a9a628e
fix: improvements for login flow (incl. webauthn) ( #1026 )
...
* fix: typo ZITADEL uppercase for OTP Issuer
* fix: password validation after change in current user agent
* fix: otp validation after setup in current user agent
* add waiting
* add waiting
* show u2f state
* regenerate css
* add useragentID to webauthn verify
* return mfa attribute in mgmt
* switch between providers
* use preferredLoginName for webauthn display
* some fixes
* correct translations for login
* add some missing event translations
* fix usersession test
* remove unnecessary cancel button on password change done
2020-12-07 12:09:10 +01:00
Livio Amstutz
300ade66a7
feat: add WebAuthN support for passwordless login and 2fa ( #966 )
...
* at least registration prompt works
* in memory test for login
* buttons to start webauthn process
* begin eventstore impl
* begin eventstore impl
* serialize into bytes
* fix: u2f, passwordless types
* fix for localhost
* fix script
* fix: u2f, passwordless types
* fix: add u2f
* fix: verify u2f
* fix: session data in event store
* fix: u2f credentials in eventstore
* fix: webauthn pkg handles business models
* feat: tests
* feat: append events
* fix: test
* fix: check only ready webauthn creds
* fix: move u2f methods to authrepo
* frontend improvements
* fix return
* feat: add passwordless
* feat: add passwordless
* improve ui / error handling
* separate call for login
* fix login
* js
* feat: u2f login methods
* feat: remove unused session id
* feat: error handling
* feat: error handling
* feat: refactor user eventstore
* feat: finish webauthn
* feat: u2f and passwordlss in auth.proto
* u2f step
* passwordless step
* cleanup js
* EndpointPasswordLessLogin
* migration
* update mfaChecked test
* next step test
* token name
* cleanup
* attribute
* passwordless as tokens
* remove sms as otp type
* add "user" to amr for webauthn
* error handling
* fixes
* fix tests
* naming
* naming
* fixes
* session handler
* i18n
* error handling in login
* Update internal/ui/login/static/i18n/de.yaml
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* Update internal/ui/login/static/i18n/en.yaml
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* improvements
* merge fixes
* fixes
* fixes
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
2020-12-02 17:00:04 +01:00
Fabi
7c6fd2b51e
fix: Externallogin on existing session ( #990 )
...
* fix: existing session with external login
* fix: existing session with external login
* fix: return in login
2020-11-20 09:00:49 +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
318e2c5e44
fix: reset external login verification on logout ( #840 )
2020-10-15 09:37:12 +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
71abc4f077
test: machine ( #683 )
...
* test: machine
* test: better naming
2020-09-15 15:04:02 +02:00
Silvan
5abd5b0505
feat: split users into human and machine ( #470 )
...
* feat(management): service accounts
* chore: current go version
* init
* refactor: apis
* feat(internal): start impl of service account
* chore: start impl of machine/human users
* code compiles
* fix: tests
* fix: tests
* fix: add new event types to switches
* chore: add cases to event types
* fix(management): definitive proto messages
* fix: machine/human
* fix: add missing tables as todos
* fix: remove unused permissions
* fix: refactoring
* fix: refactor
* fix: human registered
* fix: user id
* fix: logid
* fix: proto remove //equal
* chore(management): remove no comment
* fix: human mfas
* fix: user subobjects
* chore: rename existing to better name
* fix: username in user (#634 )
* fix: username in user
* fix: username
* fix remove unused code
* fix add validations
* fix: use new user in all apis
* fix: regexp for username in api
* fix: fill user data for human and machine (#638 )
* fix: fill Display name grant/member handlers
fix: add description to grant/member objects in api
fix: check if user is human in login
* fix: remove description from member and grant
* chore: remove todos
* feat: machine keys
* fix: implement missing parts
* feat: machine key management view
* fix: remove keys from machine view
* fix: set default expiration date
* fix: get key by ids
* feat: add machine keys in proto
* feat: machine keys
* fix: add migration
* fix: mig
* fix: correct method name
* feat: user search
* feat: user search
* fix: log ids
* fix partial authconfig prompt, domain c perm
* membership read check
* contributor refresh trigger, observe org write
* fix: migrations
* fix(console): machine build (#660 )
* frontend 1
* fix html bindings
* trailing comma
* user permissions, project deactivate
* fix(console): human view (#661 )
* fix search user view, user detail form
* rm log
* feat(console): user services list and create (#663 )
* fix search user view, user detail form
* rm log
* machine list
* generic table component
* create user service
* proove table for undefined values
* tmp disable user link if machine
* lint
* lint styles
* user table lint
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* feat(console): service user detail view, keys cr_d, fix search user autocomplete (#664 )
* service users for sidenav, routing
* i18n
* back routes
* machine detail form
* update machine detail, fix svc user grants
* keys table
* add key dialog, timestamp creation
* check permission on create, delete, fix selection
* lint ts, scss
* Update console/src/assets/i18n/de.json
* Apply suggestions from code review
Co-authored-by: Florian Forster <florian@caos.ch>
* allow user grants for project.write
* management service
* fix mgmt service
* feat: Machine keys (#655 )
* fix: memberships (#633 )
* feat: add iam members to memberships
* fix: search project grants
* fix: rename
* feat: idp and login policy configurations (#619 )
* feat: oidc config
* fix: oidc configurations
* feat: oidc idp config
* feat: add oidc config test
* fix: tests
* fix: tests
* feat: translate new events
* feat: idp eventstore
* feat: idp eventstore
* fix: tests
* feat: command side idp
* feat: query side idp
* feat: idp config on org
* fix: tests
* feat: authz idp on org
* feat: org idps
* feat: login policy
* feat: login policy
* feat: login policy
* feat: add idp func on login policy
* feat: add validation to loginpolicy and idp provider
* feat: add default login policy
* feat: login policy on org
* feat: login policy on org
* fix: id config handlers
* fix: id config handlers
* fix: create idp on org
* fix: create idp on org
* fix: not existing idp config
* fix: default login policy
* fix: add login policy on org
* fix: idp provider search on org
* fix: test
* fix: remove idp on org
* fix: test
* fix: test
* fix: remove admin idp
* fix: logo src as byte
* fix: migration
* fix: tests
* Update internal/iam/repository/eventsourcing/iam.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/iam/repository/eventsourcing/iam_test.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/iam/repository/eventsourcing/iam_test.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/iam/repository/eventsourcing/model/login_policy.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/iam/repository/eventsourcing/model/login_policy.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/org/repository/eventsourcing/org_test.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/iam/repository/eventsourcing/model/login_policy_test.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/iam/repository/eventsourcing/model/login_policy_test.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* fix: pr comments
* fix: tests
* Update types.go
* fix: merge request changes
* fix: reduce optimization
Co-authored-by: Silvan <silvan.reusser@gmail.com>
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* fix: reread user mfas, preferred loginname as otp account name (#636 )
* fix: reread user mfas
* fix: use preferred login name as otp account name
* fix: tests
* fix: reduce (#635 )
* fix: management reduce optimization
* fix: reduce optimization
* fix: reduce optimization
* fix: merge master
* chore(deps): bump github.com/gorilla/schema from 1.1.0 to 1.2.0 (#627 )
Bumps [github.com/gorilla/schema](https://github.com/gorilla/schema ) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/gorilla/schema/releases )
- [Commits](https://github.com/gorilla/schema/compare/v1.1.0...v1.2.0 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump github.com/gorilla/mux from 1.7.4 to 1.8.0 (#624 )
Bumps [github.com/gorilla/mux](https://github.com/gorilla/mux ) from 1.7.4 to 1.8.0.
- [Release notes](https://github.com/gorilla/mux/releases )
- [Commits](https://github.com/gorilla/mux/compare/v1.7.4...v1.8.0 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump github.com/DATA-DOG/go-sqlmock from 1.4.1 to 1.5.0 (#591 )
Bumps [github.com/DATA-DOG/go-sqlmock](https://github.com/DATA-DOG/go-sqlmock ) from 1.4.1 to 1.5.0.
- [Release notes](https://github.com/DATA-DOG/go-sqlmock/releases )
- [Commits](https://github.com/DATA-DOG/go-sqlmock/compare/v1.4.1...v1.5.0 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: auto assign issues and PR to ZTIADEL project board (#643 )
* Create main.yml
* Update main.yml
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* fix(console): project grant members, update deps (#645 )
* fix: searchprojectgrantmembers
* chore(deps-dev): bump @angular/cli from 10.0.6 to 10.0.7 in /console (#622 )
Bumps [@angular/cli](https://github.com/angular/angular-cli ) from 10.0.6 to 10.0.7.
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Commits](https://github.com/angular/angular-cli/compare/v10.0.6...v10.0.7 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps-dev): bump @angular-devkit/build-angular in /console (#626 )
Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli ) from 0.1000.6 to 0.1000.7.
- [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: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>
* chore(deps-dev): bump @types/jasmine from 3.5.12 to 3.5.13 in /console (#623 )
Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine ) from 3.5.12 to 3.5.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps-dev): bump ts-node from 8.10.2 to 9.0.0 in /console (#629 )
Bumps [ts-node](https://github.com/TypeStrong/ts-node ) from 8.10.2 to 9.0.0.
- [Release notes](https://github.com/TypeStrong/ts-node/releases )
- [Commits](https://github.com/TypeStrong/ts-node/compare/v8.10.2...v9.0.0 )
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* update packlock
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: delete main.yml (#648 )
* fix: usergrant (#650 )
* fix(console): mfa refresh after verification, member eventemitter (#651 )
* refresh mfa
* fix: detail link from contributors
* lint
* feat: add domain verification notification (#649 )
* fix: dont (re)generate client secret with auth type none
* fix(cors): allow Origin from request
* feat: add origin allow list and fix some core issues
* rename migration
* fix UserIDsByDomain
* feat: send email to users after domain claim
* username
* check origin on userinfo
* update oidc pkg
* fix: add migration 1.6
* change username
* change username
* remove unique email aggregate
* change username in mgmt
* search global user by login name
* fix test
* change user search in angular
* fix tests
* merge
* userview in angular
* fix merge
* Update pkg/grpc/management/proto/management.proto
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* Update internal/notification/static/i18n/de.yaml
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* fix
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* fix: translation (#647 )
* fix: translation
* fix: translation
* fix: translation
* fix: remove unused code
* fix: log err
* fix: migration numbers (#652 )
* chore: issue / feature templates (#642 )
* feat: machine keys
* fix: implement missing parts
* feat: machine key management view
* fix: remove keys from machine view
* feat: global org read (#657 )
* fix: set default expiration date
* fix: get key by ids
* feat: add machine keys in proto
* feat: machine keys
* fix: add migration
* fix: mig
* fix: correct method name
* feat: user search
* feat: user search
* fix: log ids
* fix: migrations
* fix(console): machine build (#660 )
* frontend 1
* fix html bindings
* trailing comma
* fix(console): human view (#661 )
* fix search user view, user detail form
* rm log
* feat(console): user services list and create (#663 )
* fix search user view, user detail form
* rm log
* machine list
* generic table component
* create user service
* proove table for undefined values
* tmp disable user link if machine
* lint
* lint styles
* user table lint
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* feat(console): service user detail view, keys cr_d, fix search user autocomplete (#664 )
* service users for sidenav, routing
* i18n
* back routes
* machine detail form
* update machine detail, fix svc user grants
* keys table
* add key dialog, timestamp creation
* check permission on create, delete, fix selection
* lint ts, scss
* Update console/src/assets/i18n/de.json
* Apply suggestions from code review
Co-authored-by: Florian Forster <florian@caos.ch>
* refactor: protos
* fix(management): key expiration date
* fix: check if user is human
* fix: marshal key details
* fix: correct generate login names
* fix: logid
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
Co-authored-by: Florian Forster <florian@caos.ch>
* fix: naming
* refactor: findings
* fix: username
* fix: mfa upper case
* fix: tests
* fix: add translations
* reactivatemyorg req typeö
* fix: projectType for console
* fix: user changes
* fix: translate events
* fix: event type translation
* fix: remove unused types
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-31 17:48:01 +02:00
Livio Amstutz
e653eaab86
fix: login ( #242 )
...
* password in init user only if needed
* reactivate user session
* set context AuthorizeClientIDSecret
* fix qr code for light
* fix copy
* check user and org active in auth
* add org view provider
* handle inactive projects
* translate error messages
2020-06-19 14:52:04 +02:00
Livio Amstutz
1c59d18fee
fix: improvements for login and oidc ( #227 )
...
* add csrf
* caching
* caching
* caching
* caching
* security headers
* csp and security headers
* error handler csp
* select user with display name
* csp
* user selection styling
* username to loginname
* regenerate grpc
* regenerate
* change to login name
2020-06-17 08:06:40 +02:00
Livio Amstutz
8a5badddf6
feat: Login, OP Support and Auth Queries ( #177 )
...
* fix: change oidc config
* fix: change oidc config secret
* begin models
* begin repo
* fix: implement grpc app funcs
* fix: add application requests
* fix: converter
* fix: converter
* fix: converter and generate clientid
* fix: tests
* feat: project grant aggregate
* feat: project grant
* fix: project grant check if role existing
* fix: project grant requests
* fix: project grant fixes
* fix: project grant member model
* fix: project grant member aggregate
* fix: project grant member eventstore
* fix: project grant member requests
* feat: user model
* begin repo
* repo models and more
* feat: user command side
* lots of functions
* user command side
* profile requests
* commit before rebase on user
* save
* local config with gopass and more
* begin new auth command (user centric)
* Update internal/user/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/address.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/address.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/email.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/email.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/email.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/mfa.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/mfa.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/password.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/password.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/password.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/phone.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/phone.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/phone.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/usergrant/repository/eventsourcing/model/user_grant.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/usergrant/repository/eventsourcing/model/user_grant.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/usergrant/repository/eventsourcing/user_grant.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/user_test.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/eventstore_mock_test.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* changes from mr review
* save files into basedir
* changes from mr review
* changes from mr review
* move to auth request
* Update internal/usergrant/repository/eventsourcing/cache.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/usergrant/repository/eventsourcing/cache.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* changes requested on mr
* fix generate codes
* fix return if no events
* password code
* email verification step
* more steps
* lot of mfa
* begin tests
* more next steps
* auth api
* auth api (user)
* auth api (user)
* auth api (user)
* differ requests
* merge
* tests
* fix compilation error
* mock for id generator
* Update internal/user/repository/eventsourcing/model/password.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* requests of mr
* check email
* begin separation of command and query
* otp
* change packages
* some cleanup and fixes
* tests for auth request / next steps
* add VerificationLifetimes to config and make it run
* tests
* fix code challenge validation
* cleanup
* fix merge
* begin view
* repackaging tests and configs
* fix startup config for auth
* add migration
* add PromptSelectAccount
* fix copy / paste
* remove user_agent files
* fixes
* fix sequences in user_session
* token commands
* token queries and signout
* fix
* fix set password test
* add token handler and table
* handle session init
* add session state
* add user view test cases
* change VerifyMyMfaOTP
* some fixes
* fix user repo in auth api
* cleanup
* add user session view test
* fix merge
* begin oidc
* user agent and more
* config
* keys
* key command and query
* add login statics
* key handler
* start login
* login handlers
* lot of fixes
* merge oidc
* add missing exports
* add missing exports
* fix some bugs
* authrequestid in htmls
* getrequest
* update auth request
* fix userid check
* add username to authrequest
* fix user session and auth request handling
* fix UserSessionsByAgentID
* fix auth request tests
* fix user session on UserPasswordChanged and MfaOtpRemoved
* fix MfaTypesSetupPossible
* handle mfa
* fill username
* auth request query checks new events
* fix userSessionByIDs
* fix tokens
* fix userSessionByIDs test
* add user selection
* init code
* user code creation date
* add init user step
* add verification failed types
* add verification failures
* verify init code
* user init code handle
* user init code handle
* fix userSessionByIDs
* update logging
* user agent cookie
* browserinfo from request
* add DeleteAuthRequest
* add static login files to binary
* add login statik to build
* move generate to separate file and remove statik.go files
* remove static dirs from startup.yaml
* generate into separate namespaces
* merge master
* auth request code
* auth request type mapping
* fix keys
* improve tokens
* improve register and basic styling
* fix ailerons font
* improve password reset
* add audience to token
* all oidc apps as audience
* fix test nextStep
* fix email texts
* remove "not set"
* lot of style changes
* improve copy to clipboard
* fix footer
* add cookie handler
* remove placeholders
* fix compilation after merge
* fix auth config
* remove comments
* typo
* use new secrets store
* change default pws to match default policy
* fixes
* add todo
* enable login
* fix db name
* Auth queries (#179 )
* my usersession
* org structure/ auth handlers
* working user grant spooler
* auth internal user grants
* search my project orgs
* remove permissions file
* my zitadel permissions
* my zitadel permissions
* remove unused code
* authz
* app searches in view
* token verification
* fix user grant load
* fix tests
* fix tests
* read configs
* remove unused const
* remove todos
* env variables
* app_name
* working authz
* search projects
* global resourceowner
* Update internal/api/auth/permissions.go
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* Update internal/api/auth/permissions.go
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* model2 rename
* at least it works
* check token expiry
* search my user grants
* remove token table from authz
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
* fix test
* fix ports and enable console
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
Co-authored-by: Silvan <silvan.reusser@gmail.com>
2020-06-05 07:50:04 +02:00
Livio Amstutz
effc2c23c2
feat: add auth command side ( #107 )
...
* fix: query tests
* fix: use prepare funcs
* fix: go mod
* fix: generate files
* fix(eventstore): tests
* fix(eventstore): rename modifier to editor
* fix(migrations): add cluster migration,
fix(migrations): fix typo of host in clean clsuter
* fix(eventstore): move health
* fix(eventstore): AggregateTypeFilter aggregateType as param
* code quality
* fix: go tests
* feat: add member funcs
* feat: add member model
* feat: add member events
* feat: add member repo model
* fix: better error func testing
* fix: project member funcs
* fix: add tests
* fix: add tests
* feat: implement member requests
* fix: merge master
* fix: merge master
* fix: read existing in project repo
* fix: fix tests
* feat: add internal cache
* feat: add cache mock
* fix: return values of cache mock
* feat: add project role
* fix: add cache config
* fix: add role to eventstore
* fix: use eventstore sdk
* fix: use eventstore sdk
* fix: add project role grpc requests
* fix: fix getby id
* fix: changes for mr
* fix: change value to interface
* feat: add app event creations
* fix: searchmethods
* Update internal/project/model/project_member.go
Co-Authored-By: Silvan <silvan.reusser@gmail.com>
* fix: use get project func
* fix: append events
* fix: check if value is string on equal ignore case
* fix: add changes test
* fix: add go mod
* fix: add some tests
* fix: return err not nil
* fix: return err not nil
* fix: add aggregate funcs and tests
* fix: add oidc aggregate funcs and tests
* fix: add oidc
* fix: add some tests
* fix: tests
* feat: eventstore repository
* fix: remove gorm
* version
* feat: pkg
* feat: eventstore without eventstore-lib
* rename files
* gnueg
* fix: global model
* feat: add global view functions
* feat(eventstore): sdk
* fix(eventstore): rename app to eventstore
* delete empty test
* fix(models): delete unused struct
* feat(eventstore): overwrite context data
* fix: use global sql config
* fix: oidc validation
* fix: generate client secret
* fix: generate client id
* fix: test change app
* fix: deactivate/reactivate application
* fix: change oidc config
* fix: change oidc config secret
* begin models
* begin repo
* fix: implement grpc app funcs
* fix: add application requests
* fix: converter
* fix: converter
* fix: converter and generate clientid
* fix: tests
* feat: project grant aggregate
* feat: project grant
* fix: project grant check if role existing
* fix: project grant requests
* fix: project grant fixes
* fix: project grant member model
* fix: project grant member aggregate
* fix: project grant member eventstore
* fix: project grant member requests
* feat: user model
* begin repo
* repo models and more
* feat: user command side
* lots of functions
* user command side
* profile requests
* commit before rebase on user
* save
* local config with gopass and more
* begin new auth command (user centric)
* Update internal/user/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/address.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/address.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/email.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/email.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/email.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/mfa.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/mfa.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/password.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/password.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/password.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/phone.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/phone.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/phone.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/usergrant/repository/eventsourcing/model/user_grant.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/usergrant/repository/eventsourcing/model/user_grant.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/usergrant/repository/eventsourcing/user_grant.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/user_test.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* Update internal/user/repository/eventsourcing/eventstore_mock_test.go
Co-Authored-By: Livio Amstutz <livio.a@gmail.com>
* changes from mr review
* save files into basedir
* changes from mr review
* changes from mr review
* move to auth request
* Update internal/usergrant/repository/eventsourcing/cache.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/usergrant/repository/eventsourcing/cache.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* changes requested on mr
* fix generate codes
* fix return if no events
* password code
* email verification step
* more steps
* lot of mfa
* begin tests
* more next steps
* auth api
* auth api (user)
* auth api (user)
* auth api (user)
* differ requests
* merge
* tests
* fix compilation error
* mock for id generator
* Update internal/user/repository/eventsourcing/model/password.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* Update internal/user/repository/eventsourcing/model/user.go
Co-authored-by: Silvan <silvan.reusser@gmail.com>
* requests of mr
* check email
* begin separation of command and query
* otp
* change packages
* some cleanup and fixes
* tests for auth request / next steps
* add VerificationLifetimes to config and make it run
* tests
* fix code challenge validation
* cleanup
* fix merge
* begin view
* repackaging tests and configs
* fix startup config for auth
* add migration
* add PromptSelectAccount
* fix copy / paste
* remove user_agent files
* fixes
* fix sequences in user_session
* token commands
* token queries and signout
* fix
* fix set password test
* add token handler and table
* handle session init
* add session state
* add user view test cases
* change VerifyMyMfaOTP
* some fixes
* fix user repo in auth api
* cleanup
* add user session view test
* fix merge
* fixes
* Update internal/auth/repository/eventsourcing/eventstore/auth_request.go
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* Update internal/auth/repository/eventsourcing/eventstore/auth_request.go
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* Update internal/auth/repository/eventsourcing/eventstore/auth_request.go
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* Update internal/auth/repository/eventsourcing/eventstore/auth_request.go
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
* extract method usersForUserSelection
* add todo for policy check
* id on auth req
* fix enum name
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
2020-05-18 12:06:36 +02:00