Skip to content

Commit 4be7dcb

Browse files
committed
Add SkipLocal2FA option to other pam and smtp sources
Extend go-gitea#16954 to allow setting skip local 2fa on pam and SMTP authentication sources Signed-off-by: Andrew Thornton <art27@cantab.net>
1 parent 27b351a commit 4be7dcb

File tree

8 files changed

+46
-4
lines changed

8 files changed

+46
-4
lines changed

routers/web/admin/auths.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ func parseSMTPConfig(form forms.AuthenticationForm) *smtp.Source {
159159
SkipVerify: form.SkipVerify,
160160
HeloHostname: form.HeloHostname,
161161
DisableHelo: form.DisableHelo,
162+
SkipLocalTwoFA: form.SkipLocalTwoFA,
162163
}
163164
}
164165

@@ -242,8 +243,9 @@ func NewAuthSourcePost(ctx *context.Context) {
242243
hasTLS = true
243244
case models.LoginPAM:
244245
config = &pamService.Source{
245-
ServiceName: form.PAMServiceName,
246-
EmailDomain: form.PAMEmailDomain,
246+
ServiceName: form.PAMServiceName,
247+
EmailDomain: form.PAMEmailDomain,
248+
SkipLocalTwoFA: form.SkipLocalTwoFA,
247249
}
248250
case models.LoginOAuth2:
249251
config = parseOAuth2Config(form)

services/auth/source/pam/source.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ import (
1818

1919
// Source holds configuration for the PAM login source.
2020
type Source struct {
21-
ServiceName string // pam service (e.g. system-auth)
22-
EmailDomain string
21+
ServiceName string // pam service (e.g. system-auth)
22+
EmailDomain string
23+
SkipLocalTwoFA bool // Skip Local 2fa for users authenticated with this source
2324

2425
// reference to the loginSource
2526
loginSource *models.LoginSource

services/auth/source/pam/source_authenticate.go

+5
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,8 @@ func (source *Source) Authenticate(user *models.User, login, password string) (*
6868

6969
return user, nil
7070
}
71+
72+
// IsSkipLocalTwoFA returns if this source should skip local 2fa for password authentication
73+
func (source *Source) IsSkipLocalTwoFA() bool {
74+
return source.SkipLocalTwoFA
75+
}

services/auth/source/smtp/source.go

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type Source struct {
2626
SkipVerify bool
2727
HeloHostname string
2828
DisableHelo bool
29+
SkipLocalTwoFA bool
2930

3031
// reference to the loginSource
3132
loginSource *models.LoginSource

services/auth/source/smtp/source_authenticate.go

+5
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,8 @@ func (source *Source) Authenticate(user *models.User, login, password string) (*
8484

8585
return user, nil
8686
}
87+
88+
// IsSkipLocalTwoFA returns if this source should skip local 2fa for password authentication
89+
func (source *Source) IsSkipLocalTwoFA() bool {
90+
return source.SkipLocalTwoFA
91+
}

templates/admin/auth/edit.tmpl

+14
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,13 @@
215215
<input id="allowed_domains" name="allowed_domains" value="{{$cfg.AllowedDomains}}">
216216
<p class="help">{{.i18n.Tr "admin.auths.allowed_domains_helper"}}</p>
217217
</div>
218+
<div class="optional field">
219+
<div class="ui checkbox">
220+
<label for="skip_local_two_fa"><strong>{{.i18n.Tr "admin.auths.skip_local_two_fa"}}</strong></label>
221+
<input id="skip_local_two_fa" name="skip_local_two_fa" type="checkbox" {{if $cfg.SkipLocalTwoFA}}checked{{end}}>
222+
<p class="help">{{.i18n.Tr "admin.auths.skip_local_two_fa_helper"}}</p>
223+
</div>
224+
</div>
218225
{{end}}
219226

220227
<!-- PAM -->
@@ -228,6 +235,13 @@
228235
<label for="pam_email_domain">{{.i18n.Tr "admin.auths.pam_email_domain"}}</label>
229236
<input id="pam_email_domain" name="pam_email_domain" value="{{$cfg.EmailDomain}}">
230237
</div>
238+
<div class="optional field">
239+
<div class="ui checkbox">
240+
<label for="skip_local_two_fa"><strong>{{.i18n.Tr "admin.auths.skip_local_two_fa"}}</strong></label>
241+
<input id="skip_local_two_fa" name="skip_local_two_fa" type="checkbox" {{if $cfg.SkipLocalTwoFA}}checked{{end}}>
242+
<p class="help">{{.i18n.Tr "admin.auths.skip_local_two_fa_helper"}}</p>
243+
</div>
244+
</div>
231245
{{end}}
232246

233247
<!-- OAuth2 -->

templates/admin/auth/new.tmpl

+7
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@
4141
<label for="pam_email_domain">{{.i18n.Tr "admin.auths.pam_email_domain"}}</label>
4242
<input id="pam_email_domain" name="pam_email_domain" value="{{.pam_email_domain}}">
4343
</div>
44+
<div class="pam optional field {{if not (eq .type 4)}}hide{{end}}">
45+
<div class="ui checkbox">
46+
<label for="skip_local_two_fa"><strong>{{.i18n.Tr "admin.auths.skip_local_two_fa"}}</strong></label>
47+
<input id="skip_local_two_fa" name="skip_local_two_fa" type="checkbox" {{if .skip_local_two_fa}}checked{{end}}>
48+
<p class="help">{{.i18n.Tr "admin.auths.skip_local_two_fa_helper"}}</p>
49+
</div>
50+
</div>
4451

4552
<!-- OAuth2 -->
4653
{{ template "admin/auth/source/oauth" . }}

templates/admin/auth/source/smtp.tmpl

+7
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,11 @@
4949
<input id="allowed_domains" name="allowed_domains" value="{{.allowed_domains}}">
5050
<p class="help">{{.i18n.Tr "admin.auths.allowed_domains_helper"}}</p>
5151
</div>
52+
<div class="optional field">
53+
<div class="ui checkbox">
54+
<label for="skip_local_two_fa"><strong>{{.i18n.Tr "admin.auths.skip_local_two_fa"}}</strong></label>
55+
<input id="skip_local_two_fa" name="skip_local_two_fa" type="checkbox" {{if .skip_local_two_fa}}checked{{end}}>
56+
<p class="help">{{.i18n.Tr "admin.auths.skip_local_two_fa_helper"}}</p>
57+
</div>
58+
</div>
5259
</div>

0 commit comments

Comments
 (0)