mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-03 08:52:13 +00:00
feat: Privacy policy (#1957)
* feat: command side privacy policy * feat: add privacy policy to api * feat: add privacy policy query side * fix: add privacy policy to mgmt api * fix: add privacy policy to auth and base data * feat: use privacyPolicy in login gui * feat: use privacyPolicy in login gui * feat: test org fatures * feat: typos * feat: tos in register
This commit is contained in:
15
internal/ui/login/handler/privacy_policy_handler.go
Normal file
15
internal/ui/login/handler/privacy_policy_handler.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
iam_model "github.com/caos/zitadel/internal/iam/model"
|
||||
)
|
||||
|
||||
func (l *Login) getDefaultPrivacyPolicy(r *http.Request) (*iam_model.PrivacyPolicyView, error) {
|
||||
policy, err := l.authRepo.GetDefaultPrivacyPolicy(r.Context())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return policy, nil
|
||||
}
|
||||
@@ -321,8 +321,19 @@ func (l *Login) getBaseData(r *http.Request, authReq *domain.AuthRequest, title
|
||||
baseData.LoginPolicy = authReq.LoginPolicy
|
||||
baseData.LabelPolicy = authReq.LabelPolicy
|
||||
baseData.IDPProviders = authReq.AllowedExternalIDPs
|
||||
if authReq.PrivacyPolicy != nil {
|
||||
baseData.TOSLink = authReq.PrivacyPolicy.TOSLink
|
||||
baseData.PrivacyLink = authReq.PrivacyPolicy.PrivacyLink
|
||||
}
|
||||
} else {
|
||||
//TODO: How to handle LabelPolicy if no auth req (eg Register)
|
||||
privacyPolicy, err := l.getDefaultPrivacyPolicy(r)
|
||||
if err != nil {
|
||||
return baseData
|
||||
}
|
||||
if privacyPolicy != nil {
|
||||
baseData.TOSLink = privacyPolicy.TOSLink
|
||||
baseData.PrivacyLink = privacyPolicy.PrivacyLink
|
||||
}
|
||||
}
|
||||
return baseData
|
||||
}
|
||||
@@ -405,7 +416,6 @@ func (l *Login) isDisplayLoginNameSuffix(authReq *domain.AuthRequest) bool {
|
||||
}
|
||||
return authReq.LabelPolicy != nil && !authReq.LabelPolicy.HideLoginNameSuffix
|
||||
}
|
||||
|
||||
func getRequestID(authReq *domain.AuthRequest, r *http.Request) string {
|
||||
if authReq != nil {
|
||||
return authReq.ID
|
||||
@@ -437,6 +447,8 @@ type baseData struct {
|
||||
OrgName string
|
||||
PrimaryDomain string
|
||||
DisplayLoginNameSuffix bool
|
||||
TOSLink string
|
||||
PrivacyLink string
|
||||
AuthReqID string
|
||||
CSRF template.HTML
|
||||
Nonce string
|
||||
|
||||
@@ -160,9 +160,7 @@ Registration:
|
||||
TosConfirm: Ich akzeptiere die
|
||||
TosLinkText: AGBs
|
||||
TosConfirmAnd: und die
|
||||
TosLink: https://docs.zitadel.ch/docs/legal/terms-of-service
|
||||
PrivacyLinkText: Datenschutzerklärung
|
||||
PrivacyLink: https://docs.zitadel.ch/docs/legal/privacy-policy
|
||||
ExternalLogin: oder registriere dich mit einem externen Benutzer
|
||||
|
||||
RegistrationOrg:
|
||||
@@ -187,9 +185,7 @@ RegistrationOrg:
|
||||
TosConfirm: Ich akzeptiere die
|
||||
TosLinkText: AGBs
|
||||
TosConfirmAnd: und die
|
||||
TosLink: https://docs.zitadel.ch/docs/legal/terms-of-service
|
||||
PrivacyLinkText: Datenschutzerklärung
|
||||
PrivacyLink: https://docs.zitadel.ch/docs/legal/privacy-policy
|
||||
|
||||
LinkingUsersDone:
|
||||
Title: Benutzerlinking
|
||||
@@ -228,9 +224,7 @@ Actions:
|
||||
Footer:
|
||||
PoweredBy: Powered By
|
||||
Tos: AGB
|
||||
TosLink: https://docs.zitadel.ch/docs/legal/terms-of-service
|
||||
Privacy: Datenschutzerklärung
|
||||
PrivacyLink: https://docs.zitadel.ch/docs/legal/privacy-policy
|
||||
Help: Hilfe
|
||||
|
||||
Errors:
|
||||
|
||||
@@ -160,9 +160,7 @@ Registration:
|
||||
TosConfirm: I accept the
|
||||
TosLinkText: TOS
|
||||
TosConfirmAnd: and the
|
||||
TosLink: https://docs.zitadel.ch/docs/legal/terms-of-service
|
||||
PrivacyLinkText: privacy policy
|
||||
PrivacyLink: https://docs.zitadel.ch/docs/legal/privacy-policy
|
||||
ExternalLogin: or register with an external user
|
||||
|
||||
RegistrationOrg:
|
||||
@@ -187,9 +185,7 @@ RegistrationOrg:
|
||||
TosConfirm: I accept the
|
||||
TosLinkText: TOS
|
||||
TosConfirmAnd: and the
|
||||
TosLink: https://docs.zitadel.ch/docs/legal/terms-of-service
|
||||
PrivacyLinkText: privacy policy
|
||||
PrivacyLink: https://docs.zitadel.ch/docs/legal/privacy-policy
|
||||
|
||||
LoginSuccess:
|
||||
Title: Login successful
|
||||
@@ -228,9 +224,7 @@ Actions:
|
||||
Footer:
|
||||
PoweredBy: Powered By
|
||||
Tos: TOS
|
||||
TosLink: https://docs.zitadel.ch/docs/legal/terms-of-service
|
||||
Privacy: Privacy policy
|
||||
PrivacyLink: https://docs.zitadel.ch/docs/legal/privacy-policy
|
||||
Help: Help
|
||||
|
||||
Errors:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
{{define "footer"}}
|
||||
<footer>
|
||||
{{ if hasWatermark .LabelPolicy }}
|
||||
@@ -7,8 +8,12 @@
|
||||
</span>
|
||||
{{end}}
|
||||
<span class="fill-space"></span>
|
||||
<a href="{{t "Footer.TosLink"}}" rel="noopener noreferrer" target="_blank" alt="TOS">{{t "Footer.Tos"}}</a>
|
||||
<a href="{{t "Footer.PrivacyLink"}}" rel="noopener noreferrer" target="_blank" alt="Privacy Policy">{{t "Footer.Privacy"}}</a>
|
||||
{{ if .TOSLink }}
|
||||
<a href="{{.TOSLink}}" rel="noopener noreferrer" target="_blank" alt="TOS">{{t "Footer.Tos"}}</a>
|
||||
{{ end }}
|
||||
{{ if .PrivacyLink }}
|
||||
<a href="{{.PrivacyLink}}" rel="noopener noreferrer" target="_blank" alt="Privacy Policy">{{t "Footer.Privacy"}}</a>
|
||||
{{end}}
|
||||
<a href="https://docs.zitadel.ch/docs/manuals/user-login" target="_black" alt="Help">{{t "Footer.Help"}}</a>
|
||||
</footer>
|
||||
{{end}}
|
||||
|
||||
@@ -91,23 +91,31 @@
|
||||
{{ .PasswordPolicyDescription }}
|
||||
</div>
|
||||
|
||||
{{ if or .TOSLink .PrivacyLink }}
|
||||
<div class="lgn-field">
|
||||
<label class="lgn-label">{{t "Registration.TosAndPrivacy"}}</label>
|
||||
<div class="lgn-checkbox">
|
||||
<input type="checkbox" id="register-term-confirmation"
|
||||
name="register-term-confirmation" required>
|
||||
<label for="register-term-confirmation">
|
||||
{{t "Registration.TosConfirm"}}
|
||||
<a class="tos-link" target="_blank" href="{{t "Registration.TosLink"}}" rel="noopener noreferrer">
|
||||
{{t "Registration.TosLinkText"}}
|
||||
</a>
|
||||
{{t "Registration.TosConfirmAnd"}}
|
||||
<a class="tos-link" target="_blank" href="{{t "Registration.PrivacyLink"}}" rel="noopener noreferrer">
|
||||
{{t "Registration.PrivacyLinkText"}}
|
||||
</a>
|
||||
{{t "Registration.TosConfirm"}}
|
||||
{{ if .TOSLink }}
|
||||
<a class="tos-link" target="_blank" href="{{ .TOSLink }}" rel="noopener noreferrer">
|
||||
{{t "Registration.TosLinkText"}}
|
||||
</a>
|
||||
{{end}}
|
||||
{{ if and .TOSLink .PrivacyLink }}
|
||||
{{t "Registration.TosConfirmAnd"}}
|
||||
{{ end }}
|
||||
{{ if .PrivacyLink }}
|
||||
<a class="tos-link" target="_blank" href="{{ .PrivacyLink}}" rel="noopener noreferrer">
|
||||
{{t "Registration.PrivacyLinkText"}}
|
||||
</a>
|
||||
{{end}}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{template "error-message" .}}
|
||||
|
||||
@@ -67,21 +67,32 @@
|
||||
{{ .PasswordPolicyDescription }}
|
||||
</div>
|
||||
|
||||
{{ if or .TOSLink .PrivacyLink }}
|
||||
<div class="lgn-field">
|
||||
<label class="lgn-label" for="register-term-confirmation">{{t "RegistrationOrg.TosAndPrivacy"}}</label>
|
||||
<div class="lgn-checkbox">
|
||||
<input class="lgn-input" type="checkbox" id="register-term-confirmation"
|
||||
name="register-term-confirmation" required>
|
||||
<label class="lgn-label" for="register-term-confirmation">
|
||||
{{t "RegistrationOrg.TosConfirm"}}
|
||||
<a class="tos-link" target="_blank" href="{{t "RegistrationOrg.TosLink"}}" rel="noopener noreferrer">{{t "RegistrationOrg.TosLinkText"}}</a>
|
||||
{{t "Registration.TosConfirmAnd"}}
|
||||
<a class="tos-link" target="_blank" href="{{t "Registration.PrivacyLink"}}" rel="noopener noreferrer">
|
||||
{{t "Registration.PrivacyLinkText"}}
|
||||
</a>
|
||||
|
||||
{{t "RegistrationOrg.TosConfirm"}}
|
||||
{{ if .TOSLink }}
|
||||
<a class="tos-link" target="_blank" href="{{.TOSLink}}" rel="noopener noreferrer">{{t "RegistrationOrg.TosLinkText"}}</a>
|
||||
{{end}}
|
||||
|
||||
{{ if and .TOSLink .PrivacyLink }}
|
||||
{{t "Registration.TosConfirmAnd"}}
|
||||
{{end}}
|
||||
|
||||
{{ if .PrivacyLink }}
|
||||
<a class="tos-link" target="_blank" href="{{.PrivacyLink}}" rel="noopener noreferrer">
|
||||
{{t "Registration.PrivacyLinkText"}}
|
||||
</a>
|
||||
{{end}}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{template "error-message" .}}
|
||||
|
||||
Reference in New Issue
Block a user