mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:37:32 +00:00
feat: passwordless registration (#2103)
* begin pw less registration * create pwless one time codes * send pwless link * separate send and add passwordless link * separate send and add passwordless link events * custom message text for passwordless registration * begin custom login texts for passwordless * i18n * i18n message * i18n message * custom message text * custom login text * org design and texts * create link in human import process * fix import human tests * begin passwordless init required step * passwordless init * passwordless init * do not return link in mgmt api * prompt * passwordless init only (no additional prompt) * cleanup * cleanup * add passwordless prompt to custom login text * increase init code complexity * fix grpc * cleanup * fix and add some cases for nextStep tests * fix tests * Update internal/notification/static/i18n/en.yaml * Update internal/notification/static/i18n/de.yaml * Update proto/zitadel/management.proto * Update internal/ui/login/static/i18n/de.yaml * Update internal/ui/login/static/i18n/de.yaml * Update internal/ui/login/static/i18n/de.yaml Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
This commit is contained in:
@@ -93,7 +93,8 @@ func (r *CustomTextView) IsMessageTemplate() bool {
|
||||
r.Template == domain.PasswordResetMessageType ||
|
||||
r.Template == domain.VerifyEmailMessageType ||
|
||||
r.Template == domain.VerifyPhoneMessageType ||
|
||||
r.Template == domain.DomainClaimedMessageType
|
||||
r.Template == domain.DomainClaimedMessageType ||
|
||||
r.Template == domain.PasswordlessRegistrationMessageType
|
||||
}
|
||||
|
||||
func CustomTextViewsToMessageDomain(aggregateID, lang string, texts []*CustomTextView) *domain.CustomMessageText {
|
||||
@@ -208,6 +209,15 @@ func CustomTextViewsToLoginDomain(aggregateID, lang string, texts []*CustomTextV
|
||||
if strings.HasPrefix(text.Key, domain.LoginKeyPasswordless) {
|
||||
passwordlessKeyToDomain(text, result)
|
||||
}
|
||||
if strings.HasPrefix(text.Key, domain.LoginKeyPasswordlessPrompt) {
|
||||
passwordlessPromptKeyToDomain(text, result)
|
||||
}
|
||||
if strings.HasPrefix(text.Key, domain.LoginKeyPasswordlessRegistration) {
|
||||
passwordlessRegistrationKeyToDomain(text, result)
|
||||
}
|
||||
if strings.HasPrefix(text.Key, domain.LoginKeyPasswordlessRegistrationDone) {
|
||||
passwordlessRegistrationDoneKeyToDomain(text, result)
|
||||
}
|
||||
if strings.HasPrefix(text.Key, domain.LoginKeyPasswordChange) {
|
||||
passwordChangeKeyToDomain(text, result)
|
||||
}
|
||||
@@ -638,6 +648,60 @@ func passwordlessKeyToDomain(text *CustomTextView, result *domain.CustomLoginTex
|
||||
}
|
||||
}
|
||||
|
||||
func passwordlessPromptKeyToDomain(text *CustomTextView, result *domain.CustomLoginText) {
|
||||
if text.Key == domain.LoginKeyPasswordlessPromptTitle {
|
||||
result.PasswordlessPrompt.Title = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessPromptDescription {
|
||||
result.PasswordlessPrompt.Description = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessPromptDescriptionInit {
|
||||
result.PasswordlessPrompt.DescriptionInit = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessPromptPasswordlessButtonText {
|
||||
result.PasswordlessPrompt.PasswordlessButtonText = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessPromptNextButtonText {
|
||||
result.PasswordlessPrompt.NextButtonText = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessPromptSkipButtonText {
|
||||
result.PasswordlessPrompt.SkipButtonText = text.Text
|
||||
}
|
||||
}
|
||||
|
||||
func passwordlessRegistrationKeyToDomain(text *CustomTextView, result *domain.CustomLoginText) {
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationTitle {
|
||||
result.PasswordlessRegistration.Title = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationDescription {
|
||||
result.PasswordlessRegistration.Description = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationRegisterTokenButtonText {
|
||||
result.PasswordlessRegistration.RegisterTokenButtonText = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationTokenNameLabel {
|
||||
result.PasswordlessRegistration.TokenNameLabel = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationNotSupported {
|
||||
result.PasswordlessRegistration.NotSupported = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationErrorRetry {
|
||||
result.PasswordlessRegistration.ErrorRetry = text.Text
|
||||
}
|
||||
}
|
||||
|
||||
func passwordlessRegistrationDoneKeyToDomain(text *CustomTextView, result *domain.CustomLoginText) {
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationDoneTitle {
|
||||
result.PasswordlessRegistrationDone.Title = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationDoneDescription {
|
||||
result.PasswordlessRegistrationDone.Description = text.Text
|
||||
}
|
||||
if text.Key == domain.LoginKeyPasswordlessRegistrationDoneNextButtonText {
|
||||
result.PasswordlessRegistrationDone.NextButtonText = text.Text
|
||||
}
|
||||
}
|
||||
|
||||
func passwordChangeKeyToDomain(text *CustomTextView, result *domain.CustomLoginText) {
|
||||
if text.Key == domain.LoginKeyPasswordChangeTitle {
|
||||
result.PasswordChange.Title = text.Text
|
||||
|
Reference in New Issue
Block a user