/
expand.go
94 lines (72 loc) · 2.49 KB
/
expand.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package page
import (
"github.com/auth0/go-auth0/management"
"github.com/hashicorp/go-cty/cty"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/auth0/terraform-provider-auth0/internal/value"
)
// expandChangePasswordPage expands the change password page config.
func expandChangePasswordPage(config cty.Value) *management.TenantChangePassword {
var changePassword management.TenantChangePassword
config.ForEachElement(func(_ cty.Value, d cty.Value) (stop bool) {
changePassword.Enabled = value.Bool(d.GetAttr("enabled"))
changePassword.HTML = value.String(d.GetAttr("html"))
return stop
})
if changePassword == (management.TenantChangePassword{}) {
return nil
}
return &changePassword
}
// expandGuardianMFAPage expands the guardian mfa page config.
func expandGuardianMFAPage(config cty.Value) *management.TenantGuardianMFAPage {
var mfa management.TenantGuardianMFAPage
config.ForEachElement(func(_ cty.Value, d cty.Value) (stop bool) {
mfa.Enabled = value.Bool(d.GetAttr("enabled"))
mfa.HTML = value.String(d.GetAttr("html"))
return stop
})
if mfa == (management.TenantGuardianMFAPage{}) {
return nil
}
return &mfa
}
// expandErrorPage expands the error page config.
func expandErrorPage(config cty.Value) *management.TenantErrorPage {
var errorPage management.TenantErrorPage
config.ForEachElement(func(_ cty.Value, d cty.Value) (stop bool) {
errorPage.HTML = value.String(d.GetAttr("html"))
errorPage.ShowLogLink = value.Bool(d.GetAttr("show_log_link"))
errorPage.URL = value.String(d.GetAttr("url"))
return stop
})
if errorPage == (management.TenantErrorPage{}) {
return nil
}
return &errorPage
}
func expandLoginPage(data *schema.ResourceData) *management.Client {
if !data.HasChange("login") {
return nil
}
var clientWithLoginPage *management.Client
data.GetRawConfig().GetAttr("login").ForEachElement(func(_ cty.Value, cfg cty.Value) (stop bool) {
clientWithLoginPage = &management.Client{
CustomLoginPageOn: value.Bool(cfg.GetAttr("enabled")),
CustomLoginPage: value.String(cfg.GetAttr("html")),
}
return stop
})
return clientWithLoginPage
}
func expandTenantPages(cfg cty.Value) *management.Tenant {
tenantPages := &management.Tenant{
ChangePassword: expandChangePasswordPage(cfg.GetAttr("change_password")),
GuardianMFAPage: expandGuardianMFAPage(cfg.GetAttr("guardian_mfa")),
ErrorPage: expandErrorPage(cfg.GetAttr("error")),
}
if tenantPages.String() == "{}" {
return nil
}
return tenantPages
}