diff --git a/models/login_source.go b/models/login_source.go
index 5e1c6e2224..3a48074e9a 100644
--- a/models/login_source.go
+++ b/models/login_source.go
@@ -36,6 +36,11 @@ func (typ LoginType) String() string {
 	return LoginNames[typ]
 }
 
+// Int returns the int value of the LoginType
+func (typ LoginType) Int() int {
+	return int(typ)
+}
+
 // LoginNames contains the name of LoginType values.
 var LoginNames = map[LoginType]string{
 	LoginLDAP:   "LDAP (via BindDN)",
@@ -218,6 +223,10 @@ func CreateLoginSource(source *LoginSource) error {
 		return nil
 	}
 
+	if settable, ok := source.Cfg.(LoginSourceSettable); ok {
+		settable.SetLoginSource(source)
+	}
+
 	registerableSource, ok := source.Cfg.(RegisterableSource)
 	if !ok {
 		return nil
@@ -320,6 +329,10 @@ func UpdateSource(source *LoginSource) error {
 		return nil
 	}
 
+	if settable, ok := source.Cfg.(LoginSourceSettable); ok {
+		settable.SetLoginSource(source)
+	}
+
 	registerableSource, ok := source.Cfg.(RegisterableSource)
 	if !ok {
 		return nil
diff --git a/services/auth/source/ldap/security_protocol.go b/services/auth/source/ldap/security_protocol.go
index 47c9d30e5c..bb0c7770a1 100644
--- a/services/auth/source/ldap/security_protocol.go
+++ b/services/auth/source/ldap/security_protocol.go
@@ -19,6 +19,11 @@ func (s SecurityProtocol) String() string {
 	return SecurityProtocolNames[s]
 }
 
+// Int returns the int value of the SecurityProtocol
+func (s SecurityProtocol) Int() int {
+	return int(s)
+}
+
 // SecurityProtocolNames contains the name of SecurityProtocol values.
 var SecurityProtocolNames = map[SecurityProtocol]string{
 	SecurityProtocolUnencrypted: "Unencrypted",
diff --git a/templates/admin/auth/edit.tmpl b/templates/admin/auth/edit.tmpl
index 3fbfedefe7..22a2903b27 100644
--- a/templates/admin/auth/edit.tmpl
+++ b/templates/admin/auth/edit.tmpl
@@ -12,7 +12,7 @@
 				<input type="hidden" name="id" value="{{.Source.ID}}">
 				<div class="inline field">
 					<label>{{$.i18n.Tr "admin.auths.auth_type"}}</label>
-					<input type="hidden" id="auth_type" name="type" value="{{.Source.Type}}">
+					<input type="hidden" id="auth_type" name="type" value="{{.Source.Type.Int}}">
 					<span>{{.Source.TypeName}}</span>
 				</div>
 				<div class="required inline field {{if .Err_Name}}error{{end}}">
@@ -31,7 +31,7 @@
 							{{svg "octicon-triangle-down" 14 "dropdown icon"}}
 							<div class="menu">
 								{{range .SecurityProtocols}}
-									<div class="item" data-value="{{.Type}}">{{.Name}}</div>
+									<div class="item" data-value="{{.Type.Int}}">{{.Name}}</div>
 								{{end}}
 							</div>
 						</div>
diff --git a/templates/admin/auth/new.tmpl b/templates/admin/auth/new.tmpl
index 302132e06b..6addc50d09 100644
--- a/templates/admin/auth/new.tmpl
+++ b/templates/admin/auth/new.tmpl
@@ -13,12 +13,12 @@
 				<div class="inline required field {{if .Err_Type}}error{{end}}">
 					<label>{{.i18n.Tr "admin.auths.auth_type"}}</label>
 					<div class="ui selection type dropdown">
-						<input type="hidden" id="auth_type" name="type" value="{{.type}}">
+						<input type="hidden" id="auth_type" name="type" value="{{.type.Int}}">
 						<div class="text">{{.CurrentTypeName}}</div>
 						{{svg "octicon-triangle-down" 14 "dropdown icon"}}
 						<div class="menu">
 							{{range .AuthSources}}
-								<div class="item" data-value="{{.Type}}">{{.Name}}</div>
+								<div class="item" data-value="{{.Type.Int}}">{{.Name}}</div>
 							{{end}}
 						</div>
 					</div>
diff --git a/templates/admin/auth/source/ldap.tmpl b/templates/admin/auth/source/ldap.tmpl
index 1cbcb2fd41..0b7ad7a4da 100644
--- a/templates/admin/auth/source/ldap.tmpl
+++ b/templates/admin/auth/source/ldap.tmpl
@@ -7,7 +7,7 @@
 			{{svg "octicon-triangle-down" 14 "dropdown icon"}}
 			<div class="menu">
 				{{range .SecurityProtocols}}
-					<div class="item" data-value="{{.Type}}">{{.Name}}</div>
+					<div class="item" data-value="{{.Type.Int}}">{{.Name}}</div>
 				{{end}}
 			</div>
 		</div>