Infrastructure changes to allow for seamless Single-Sign-On implementations.
:recycle: Current situation & Problem
While IdentityProvider are currently supported by SpeziAccount, there are some issues when trying to accommodate more extended use cases or certain limitations when combining different functionality.
Below is a list of certain pain points including general improvements this PR makes:
Currently, account values requirements are globally applied. E.g., a configured password key is required for all account services. This doesn't fit very well for SSO providers as they intentionally don't collect passwords. Instead one would need a way of declaring AccountKeys required in the context of a given account services. This is resolved by changing the effect of the RequiredAccountKeys configuration an account service would provide and consequentially removing the need for the user to declare the password account value globally required.
We added a new FollowUpInfoSheet that automatically pops up after account setup to assist the user to provide any additional account details that are configured to be required. That is especially useful when using Identity Provider like Sign in with Apple that only provide a fixed set of user information.
A new verifyRequiredAccountDetails(_:) modifier was added to implement the same logic on the global application level. This can be used that existing users always are in line with the latest configuration of your app.
The accountRequired(_:setupSheet:) modifier was added to enforce a user account at all times.
Added a new globally unique and stable AccountId, mandatory for each user account.
Fixed an issue where the SignupForm cancel confirmation would always pop up when using AccountKeys with default values.
Other fixes and improvements.
:gear: Release Notes
Added several infrastructure enhancements that allow for an improved user experience and compatibility when using identity providers.
Breaking Changes
We introduce a new accountId (see AccountIdKey) account value that is mandatory for all user accounts. This is now also used as a primary identifier for AccountStorageStandards.
:books: Documentation
Documentation was updated respectively.
:white_check_mark: Testing
Test cases were added for new functionality or fixed functionality.
:pencil: Code of Conduct & Contributing Guidelines
Infrastructure changes to allow for seamless Single-Sign-On implementations.
:recycle: Current situation & Problem
While
IdentityProvider
are currently supported bySpeziAccount
, there are some issues when trying to accommodate more extended use cases or certain limitations when combining different functionality.Below is a list of certain pain points including general improvements this PR makes:
RequiredAccountKeys
configuration an account service would provide and consequentially removing the need for the user to declare thepassword
account value globally required.FollowUpInfoSheet
that automatically pops up after account setup to assist the user to provide any additional account details that are configured to be required. That is especially useful when using Identity Provider like Sign in with Apple that only provide a fixed set of user information. A newverifyRequiredAccountDetails(_:)
modifier was added to implement the same logic on the global application level. This can be used that existing users always are in line with the latest configuration of your app.accountRequired(_:setupSheet:)
modifier was added to enforce a user account at all times.AccountId
, mandatory for each user account.:gear: Release Notes
Added several infrastructure enhancements that allow for an improved user experience and compatibility when using identity providers.
Breaking Changes
accountId
(seeAccountIdKey
) account value that is mandatory for all user accounts. This is now also used as a primary identifier forAccountStorageStandard
s.:books: Documentation
Documentation was updated respectively.
:white_check_mark: Testing
Test cases were added for new functionality or fixed functionality.
:pencil: Code of Conduct & Contributing Guidelines
By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines: