This moves fields into the `OAuthButtons` struct and puts the buttons into templates/includes/oauth.tmpl.pull/370/head
@@ -304,32 +304,18 @@ func viewLogin(app *App, w http.ResponseWriter, r *http.Request) error { | |||
p := &struct { | |||
page.StaticPage | |||
To string | |||
Message template.HTML | |||
Flashes []template.HTML | |||
LoginUsername string | |||
OauthSlack bool | |||
OauthWriteAs bool | |||
OauthGitlab bool | |||
GitlabDisplayName string | |||
OauthGeneric bool | |||
OauthGenericDisplayName string | |||
OauthGitea bool | |||
GiteaDisplayName string | |||
*OAuthButtons | |||
To string | |||
Message template.HTML | |||
Flashes []template.HTML | |||
LoginUsername string | |||
}{ | |||
StaticPage: pageForReq(app, r), | |||
To: r.FormValue("to"), | |||
Message: template.HTML(""), | |||
Flashes: []template.HTML{}, | |||
LoginUsername: getTempInfo(app, "login-user", r, w), | |||
OauthSlack: app.Config().SlackOauth.ClientID != "", | |||
OauthWriteAs: app.Config().WriteAsOauth.ClientID != "", | |||
OauthGitlab: app.Config().GitlabOauth.ClientID != "", | |||
GitlabDisplayName: config.OrDefaultString(app.Config().GitlabOauth.DisplayName, gitlabDisplayName), | |||
OauthGeneric: app.Config().GenericOauth.ClientID != "", | |||
OauthGenericDisplayName: config.OrDefaultString(app.Config().GenericOauth.DisplayName, genericOauthDisplayName), | |||
OauthGitea: app.Config().GiteaOauth.ClientID != "", | |||
GiteaDisplayName: config.OrDefaultString(app.Config().GiteaOauth.DisplayName, giteaDisplayName), | |||
StaticPage: pageForReq(app, r), | |||
OAuthButtons: NewOAuthButtons(app.Config()), | |||
To: r.FormValue("to"), | |||
Message: template.HTML(""), | |||
Flashes: []template.HTML{}, | |||
LoginUsername: getTempInfo(app, "login-user", r, w), | |||
} | |||
if earlyError != "" { | |||
@@ -238,27 +238,16 @@ func handleViewLanding(app *App, w http.ResponseWriter, r *http.Request) error { | |||
p := struct { | |||
page.StaticPage | |||
*OAuthButtons | |||
Flashes []template.HTML | |||
Banner template.HTML | |||
Content template.HTML | |||
ForcedLanding bool | |||
OauthSlack bool | |||
OauthWriteAs bool | |||
OauthGitlab bool | |||
OauthGeneric bool | |||
OauthGenericDisplayName string | |||
GitlabDisplayName string | |||
}{ | |||
StaticPage: pageForReq(app, r), | |||
ForcedLanding: forceLanding, | |||
OauthSlack: app.Config().SlackOauth.ClientID != "", | |||
OauthWriteAs: app.Config().WriteAsOauth.ClientID != "", | |||
OauthGitlab: app.Config().GitlabOauth.ClientID != "", | |||
OauthGeneric: app.Config().GenericOauth.ClientID != "", | |||
OauthGenericDisplayName: config.OrDefaultString(app.Config().GenericOauth.DisplayName, genericOauthDisplayName), | |||
GitlabDisplayName: config.OrDefaultString(app.Config().GitlabOauth.DisplayName, gitlabDisplayName), | |||
StaticPage: pageForReq(app, r), | |||
OAuthButtons: NewOAuthButtons(app.Config()), | |||
ForcedLanding: forceLanding, | |||
} | |||
banner, err := getLandingBanner(app) | |||
@@ -30,19 +30,27 @@ import ( | |||
// OAuthButtons holds display information for different OAuth providers we support. | |||
type OAuthButtons struct { | |||
SlackEnabled bool | |||
WriteAsEnabled bool | |||
GitLabEnabled bool | |||
GitLabDisplayName string | |||
SlackEnabled bool | |||
WriteAsEnabled bool | |||
GitLabEnabled bool | |||
GitLabDisplayName string | |||
GiteaEnabled bool | |||
GiteaDisplayName string | |||
GenericEnabled bool | |||
GenericDisplayName string | |||
} | |||
// NewOAuthButtons creates a new OAuthButtons struct based on our app configuration. | |||
func NewOAuthButtons(cfg *config.Config) *OAuthButtons { | |||
return &OAuthButtons{ | |||
SlackEnabled: cfg.SlackOauth.ClientID != "", | |||
WriteAsEnabled: cfg.WriteAsOauth.ClientID != "", | |||
GitLabEnabled: cfg.GitlabOauth.ClientID != "", | |||
GitLabDisplayName: config.OrDefaultString(cfg.GitlabOauth.DisplayName, gitlabDisplayName), | |||
SlackEnabled: cfg.SlackOauth.ClientID != "", | |||
WriteAsEnabled: cfg.WriteAsOauth.ClientID != "", | |||
GitLabEnabled: cfg.GitlabOauth.ClientID != "", | |||
GitLabDisplayName: config.OrDefaultString(cfg.GitlabOauth.DisplayName, gitlabDisplayName), | |||
GiteaEnabled: cfg.GiteaOauth.ClientID != "", | |||
GiteaDisplayName: config.OrDefaultString(cfg.GiteaOauth.DisplayName, giteaDisplayName), | |||
GenericEnabled: cfg.GenericOauth.ClientID != "", | |||
GenericDisplayName: config.OrDefaultString(cfg.GenericOauth.DisplayName, genericOauthDisplayName), | |||
} | |||
} | |||
@@ -60,6 +60,9 @@ form dd { | |||
margin-top: 0; | |||
max-width: 8em; | |||
} | |||
.or { | |||
margin-bottom: 2.5em !important; | |||
} | |||
</style> | |||
{{end}} | |||
{{define "content"}} | |||
@@ -73,20 +76,7 @@ form dd { | |||
<div{{if not .OpenRegistration}} style="padding: 2em 0;"{{end}}> | |||
{{ if .OpenRegistration }} | |||
{{ if or .OauthSlack .OauthWriteAs .OauthGitlab .OauthGeneric }} | |||
{{ if .OauthSlack }} | |||
<div class="row content-container signinbtns signinoauthbtns"><a class="loginbtn" href="/oauth/slack"><img alt="Sign in with Slack" height="40" width="172" src="/img/sign_in_with_slack.png" srcset="/img/sign_in_with_slack.png 1x, /img/sign_in_with_slack@2x.png 2x" /></a></div> | |||
{{ end }} | |||
{{ if .OauthWriteAs }} | |||
<div class="row content-container signinbtns signinoauthbtns"><a class="btn cta loginbtn" id="writeas-login" href="/oauth/write.as">Sign in with <strong>Write.as</strong></a></div> | |||
{{ end }} | |||
{{ if .OauthGitlab }} | |||
<div class="row content-container signinbtns signinoauthbtns"><a class="btn cta loginbtn" id="gitlab-login" href="/oauth/gitlab">Sign in with <strong>{{.GitlabDisplayName}}</strong></a></div> | |||
{{ end }} | |||
{{ if .OauthGeneric }} | |||
<div class="row content-container signinbtns signinoauthbtns"><a class="btn cta loginbtn" id="generic-oauth-login" href="/oauth/generic">Sign in with <strong>{{ .OauthGenericDisplayName }}</strong></a></div> | |||
{{ end }} | |||
{{ end }} | |||
{{template "oauth-buttons" .}} | |||
{{if not .DisablePasswordAuth}} | |||
{{if .Flashes}}<ul class="errors"> | |||
{{range .Flashes}}<li class="urgent">{{.}}</li>{{end}} | |||
@@ -13,32 +13,7 @@ input{margin-bottom:0.5em;} | |||
{{range .Flashes}}<li class="urgent">{{.}}</li>{{end}} | |||
</ul>{{end}} | |||
{{ if or .OauthSlack .OauthWriteAs .OauthGitlab .OauthGeneric .OauthGitea }} | |||
<div class="row content-container signinbtns"> | |||
{{ if .OauthSlack }} | |||
<a class="loginbtn" href="/oauth/slack"><img alt="Sign in with Slack" height="40" width="172" src="/img/sign_in_with_slack.png" srcset="/img/sign_in_with_slack.png 1x, /img/sign_in_with_slack@2x.png 2x" /></a> | |||
{{ end }} | |||
{{ if .OauthWriteAs }} | |||
<a class="btn cta loginbtn" id="writeas-login" href="/oauth/write.as">Sign in with <strong>Write.as</strong></a> | |||
{{ end }} | |||
{{ if .OauthGitlab }} | |||
<a class="btn cta loginbtn" id="gitlab-login" href="/oauth/gitlab">Sign in with <strong>{{.GitlabDisplayName}}</strong></a> | |||
{{ end }} | |||
{{ if .OauthGeneric }} | |||
<a class="btn cta loginbtn" id="generic-oauth-login" href="/oauth/generic">Sign in with <strong>{{ .OauthGenericDisplayName }}</strong></a> | |||
{{ end }} | |||
{{ if .OauthGitea }} | |||
<a class="btn cta loginbtn" id="gitea-login" href="/oauth/gitea">Sign in with <strong>{{.GiteaDisplayName}}</strong></a> | |||
{{ end }} | |||
</div> | |||
{{if not .DisablePasswordAuth}} | |||
<div class="or"> | |||
<p>or</p> | |||
<hr class="short" /> | |||
</div> | |||
{{end}} | |||
{{ end }} | |||
{{template "oauth-buttons" .}} | |||
{{if not .DisablePasswordAuth}} | |||
<form action="/auth/login" method="post" style="text-align: center;margin-top:1em;" onsubmit="disableSubmit()"> | |||
@@ -85,12 +85,18 @@ func initPage(parentDir, path, key string) { | |||
log.Info(" [%s] %s", key, path) | |||
} | |||
pages[key] = template.Must(template.New("").Funcs(funcMap).ParseFiles( | |||
files := []string{ | |||
path, | |||
filepath.Join(parentDir, templatesDir, "include", "footer.tmpl"), | |||
filepath.Join(parentDir, templatesDir, "base.tmpl"), | |||
filepath.Join(parentDir, templatesDir, "user", "include", "silenced.tmpl"), | |||
)) | |||
} | |||
if key == "login.tmpl" || key == "landing.tmpl" { | |||
files = append(files, filepath.Join(parentDir, templatesDir, "include", "oauth.tmpl")) | |||
} | |||
pages[key] = template.Must(template.New("").Funcs(funcMap).ParseFiles(files...)) | |||
} | |||
func initUserPage(parentDir, path, key string) { | |||
@@ -0,0 +1,28 @@ | |||
{{define "oauth-buttons"}} | |||
{{ if or .SlackEnabled .WriteAsEnabled .GitLabEnabled .GiteaEnabled .GenericEnabled }} | |||
<div class="row content-container signinbtns"> | |||
{{ if .SlackEnabled }} | |||
<a class="loginbtn" href="/oauth/slack"><img alt="Sign in with Slack" height="40" width="172" src="/img/sign_in_with_slack.png" srcset="/img/sign_in_with_slack.png 1x, /img/sign_in_with_slack@2x.png 2x" /></a> | |||
{{ end }} | |||
{{ if .WriteAsEnabled }} | |||
<a class="btn cta loginbtn" id="writeas-login" href="/oauth/write.as">Sign in with <strong>Write.as</strong></a> | |||
{{ end }} | |||
{{ if .GitLabEnabled }} | |||
<a class="btn cta loginbtn" id="gitlab-login" href="/oauth/gitlab">Sign in with <strong>{{.GitLabDisplayName}}</strong></a> | |||
{{ end }} | |||
{{ if .GiteaEnabled }} | |||
<a class="btn cta loginbtn" id="gitea-login" href="/oauth/gitea">Sign in with <strong>{{.GiteaDisplayName}}</strong></a> | |||
{{ end }} | |||
{{ if .GenericEnabled }} | |||
<a class="btn cta loginbtn" id="generic-oauth-login" href="/oauth/generic">Sign in with <strong>{{.GenericDisplayName}}</strong></a> | |||
{{ end }} | |||
</div> | |||
{{if not .DisablePasswordAuth}} | |||
<div class="or"> | |||
<p>or</p> | |||
<hr class="short" /> | |||
</div> | |||
{{end}} | |||
{{ end }} | |||
{{end}} |