Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor: Move login out of models #16199

Merged
merged 63 commits into from
Jul 24, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
05e09d9
Rename auth.Auth auth.Method
zeripath Jun 18, 2021
dcddf7d
Move UserSignIn and ExternalLogin in to services
zeripath Jun 18, 2021
331797e
Move Login functions out of models
zeripath Jun 18, 2021
d1d9e44
actually lets make these sources
zeripath Jun 19, 2021
d98bbbc
Move SyncExternal to services/auth
zeripath Jun 19, 2021
1116a1f
Restructure ssh_key.go
zeripath Jun 19, 2021
bb1ff63
Extract out login-sources from models
zeripath Jun 19, 2021
dd346f1
move modules/auth/ldap to services/auth/source/ldap
zeripath Jun 20, 2021
70f542c
fix reflection
zeripath Jun 20, 2021
521f183
handle non-pointer sources
zeripath Jun 20, 2021
202c971
fix readme file
zeripath Jun 20, 2021
2dd7211
unregister
zeripath Jun 20, 2021
2a44869
Remove modules/auth/oauth2 and begin clean up of oauth2
zeripath Jun 20, 2021
743692a
fixup! Extract out login-sources from models
zeripath Jun 20, 2021
5ceec66
fixup! Extract out login-sources from models
zeripath Jun 20, 2021
7c47d46
fixup! Extract out login-sources from models
zeripath Jun 20, 2021
ee3871d
fixup! Remove modules/auth/oauth2 and begin clean up of oauth2
zeripath Jun 20, 2021
9b36de8
minor cleanups
zeripath Jun 20, 2021
8173d67
Simplify login source functions
zeripath Jun 20, 2021
3747cac
Despecialize db authentication and fix bug
zeripath Jun 21, 2021
550ed70
Add explanation to assert_interface_test.go
zeripath Jun 21, 2021
8f13037
fixup! Despecialize db authentication and fix bug
zeripath Jun 21, 2021
49c6c2a
create AllActiveLoginSources as ActiveLoginSources(-1) is a bit weird
zeripath Jun 21, 2021
c17fda3
Handle prohibit logins correctly
zeripath Jun 21, 2021
cb668e5
fixup! Despecialize db authentication and fix bug
zeripath Jun 21, 2021
320136e
Simplify auth.Method interface
zeripath Jun 21, 2021
f26a817
fixup! Simplify auth.Method interface
zeripath Jun 21, 2021
2db8e5d
fixup! fixup! Despecialize db authentication and fix bug
zeripath Jun 21, 2021
46cae9d
fixup! Handle prohibit logins correctly
zeripath Jun 21, 2021
65714ff
fixup! fixup! Simplify auth.Method interface
zeripath Jun 21, 2021
e1a015f
Fix #16235
zeripath Jun 23, 2021
4b7258e
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jun 24, 2021
339a74b
Fix #16252 - Equivalent to #16268
zeripath Jun 27, 2021
88d9546
fixup! Fix #16252 - Equivalent to #16268
zeripath Jun 27, 2021
c8df67e
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jun 27, 2021
e9c2f08
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jun 28, 2021
0035730
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jul 13, 2021
19d7354
Merge branch 'main' into move-login-out-of-models
zeripath Jul 14, 2021
e5c90e8
Merge branch 'main' into move-login-out-of-models
zeripath Jul 14, 2021
ff75fac
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jul 14, 2021
ee5f398
as per lafriks use migration instead
zeripath Jul 14, 2021
c99782f
Merge branch 'main' into move-login-out-of-models
zeripath Jul 15, 2021
3512d16
Merge branch 'main' into move-login-out-of-models
6543 Jul 15, 2021
3497354
fix tests
zeripath Jul 15, 2021
de5ac9f
Merge branch 'move-login-out-of-models' of github.com:zeripath/gitea …
zeripath Jul 15, 2021
e8edc15
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jul 15, 2021
f1fb660
fix test
zeripath Jul 15, 2021
95e2688
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jul 15, 2021
28b5748
not sure if this will help
zeripath Jul 15, 2021
aa47835
And rename IsActived to IsActive
zeripath Jul 15, 2021
5244f40
fixup! And rename IsActived to IsActive
zeripath Jul 15, 2021
28c8f31
Delete db at the end of migration tests
zeripath Jul 15, 2021
699bd42
Add basic edit ldap auth test & actually fix #16252
zeripath Jul 16, 2021
a38947e
Merge branch 'add-ldap-configuration-edit-tests' into move-login-out-…
zeripath Jul 17, 2021
70b1975
fixup! Merge branch 'add-ldap-configuration-edit-tests' into move-log…
zeripath Jul 17, 2021
116f109
fix edit template
zeripath Jul 17, 2021
66cb90f
sort import
6543 Jul 17, 2021
f387862
Merge branch 'master' into move-login-out-of-models
6543 Jul 17, 2021
3a7e26e
Merge remote-tracking branch 'origin/main' into move-login-out-of-models
zeripath Jul 21, 2021
11eb3f8
Merge branch 'main' into move-login-out-of-models
zeripath Jul 22, 2021
11c5a8a
Merge branch 'main' into move-login-out-of-models
zeripath Jul 22, 2021
8c26105
Merge branch 'main' into move-login-out-of-models
6543 Jul 23, 2021
e802acc
Merge branch 'main' into move-login-out-of-models
zeripath Jul 24, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions cmd/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ import (
"text/tabwriter"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/auth/oauth2"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/log"
pwd "code.gitea.io/gitea/modules/password"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/storage"
"code.gitea.io/gitea/services/auth/source/oauth2"

"github.com/urfave/cli"
)
Expand Down Expand Up @@ -597,7 +597,7 @@ func runRegenerateKeys(_ *cli.Context) error {
return models.RewriteAllPublicKeys()
}

func parseOAuth2Config(c *cli.Context) *models.OAuth2Config {
func parseOAuth2Config(c *cli.Context) *oauth2.Source {
var customURLMapping *oauth2.CustomURLMapping
if c.IsSet("use-custom-urls") {
customURLMapping = &oauth2.CustomURLMapping{
Expand All @@ -609,7 +609,7 @@ func parseOAuth2Config(c *cli.Context) *models.OAuth2Config {
} else {
customURLMapping = nil
}
return &models.OAuth2Config{
return &oauth2.Source{
Provider: c.String("provider"),
ClientID: c.String("key"),
ClientSecret: c.String("secret"),
Expand All @@ -625,10 +625,10 @@ func runAddOauth(c *cli.Context) error {
}

return models.CreateLoginSource(&models.LoginSource{
Type: models.LoginOAuth2,
Name: c.String("name"),
IsActived: true,
Cfg: parseOAuth2Config(c),
Type: models.LoginOAuth2,
Name: c.String("name"),
IsActive: true,
Cfg: parseOAuth2Config(c),
})
}

Expand All @@ -646,7 +646,7 @@ func runUpdateOauth(c *cli.Context) error {
return err
}

oAuth2Config := source.OAuth2()
oAuth2Config := source.Cfg.(*oauth2.Source)

if c.IsSet("name") {
source.Name = c.String("name")
Expand Down Expand Up @@ -728,7 +728,7 @@ func runListAuth(c *cli.Context) error {
w := tabwriter.NewWriter(os.Stdout, c.Int("min-width"), c.Int("tab-width"), c.Int("padding"), padChar, flags)
fmt.Fprintf(w, "ID\tName\tType\tEnabled\n")
for _, source := range loginSources {
fmt.Fprintf(w, "%d\t%s\t%s\t%t\n", source.ID, source.Name, models.LoginNames[source.Type], source.IsActived)
fmt.Fprintf(w, "%d\t%s\t%s\t%t\n", source.ID, source.Name, models.LoginNames[source.Type], source.IsActive)
}
w.Flush()

Expand Down
76 changes: 36 additions & 40 deletions cmd/admin_auth_ldap.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"strings"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/auth/ldap"
"code.gitea.io/gitea/services/auth/source/ldap"

"github.com/urfave/cli"
)
Expand Down Expand Up @@ -172,86 +172,86 @@ func parseLoginSource(c *cli.Context, loginSource *models.LoginSource) {
loginSource.Name = c.String("name")
}
if c.IsSet("not-active") {
loginSource.IsActived = !c.Bool("not-active")
loginSource.IsActive = !c.Bool("not-active")
}
if c.IsSet("synchronize-users") {
loginSource.IsSyncEnabled = c.Bool("synchronize-users")
}
}

// parseLdapConfig assigns values on config according to command line flags.
func parseLdapConfig(c *cli.Context, config *models.LDAPConfig) error {
func parseLdapConfig(c *cli.Context, config *ldap.Source) error {
if c.IsSet("name") {
config.Source.Name = c.String("name")
config.Name = c.String("name")
}
if c.IsSet("host") {
config.Source.Host = c.String("host")
config.Host = c.String("host")
}
if c.IsSet("port") {
config.Source.Port = c.Int("port")
config.Port = c.Int("port")
}
if c.IsSet("security-protocol") {
p, ok := findLdapSecurityProtocolByName(c.String("security-protocol"))
if !ok {
return fmt.Errorf("Unknown security protocol name: %s", c.String("security-protocol"))
}
config.Source.SecurityProtocol = p
config.SecurityProtocol = p
}
if c.IsSet("skip-tls-verify") {
config.Source.SkipVerify = c.Bool("skip-tls-verify")
config.SkipVerify = c.Bool("skip-tls-verify")
}
if c.IsSet("bind-dn") {
config.Source.BindDN = c.String("bind-dn")
config.BindDN = c.String("bind-dn")
}
if c.IsSet("user-dn") {
config.Source.UserDN = c.String("user-dn")
config.UserDN = c.String("user-dn")
}
if c.IsSet("bind-password") {
config.Source.BindPassword = c.String("bind-password")
config.BindPassword = c.String("bind-password")
}
if c.IsSet("user-search-base") {
config.Source.UserBase = c.String("user-search-base")
config.UserBase = c.String("user-search-base")
}
if c.IsSet("username-attribute") {
config.Source.AttributeUsername = c.String("username-attribute")
config.AttributeUsername = c.String("username-attribute")
}
if c.IsSet("firstname-attribute") {
config.Source.AttributeName = c.String("firstname-attribute")
config.AttributeName = c.String("firstname-attribute")
}
if c.IsSet("surname-attribute") {
config.Source.AttributeSurname = c.String("surname-attribute")
config.AttributeSurname = c.String("surname-attribute")
}
if c.IsSet("email-attribute") {
config.Source.AttributeMail = c.String("email-attribute")
config.AttributeMail = c.String("email-attribute")
}
if c.IsSet("attributes-in-bind") {
config.Source.AttributesInBind = c.Bool("attributes-in-bind")
config.AttributesInBind = c.Bool("attributes-in-bind")
}
if c.IsSet("public-ssh-key-attribute") {
config.Source.AttributeSSHPublicKey = c.String("public-ssh-key-attribute")
config.AttributeSSHPublicKey = c.String("public-ssh-key-attribute")
}
if c.IsSet("page-size") {
config.Source.SearchPageSize = uint32(c.Uint("page-size"))
config.SearchPageSize = uint32(c.Uint("page-size"))
}
if c.IsSet("user-filter") {
config.Source.Filter = c.String("user-filter")
config.Filter = c.String("user-filter")
}
if c.IsSet("admin-filter") {
config.Source.AdminFilter = c.String("admin-filter")
config.AdminFilter = c.String("admin-filter")
}
if c.IsSet("restricted-filter") {
config.Source.RestrictedFilter = c.String("restricted-filter")
config.RestrictedFilter = c.String("restricted-filter")
}
if c.IsSet("allow-deactivate-all") {
config.Source.AllowDeactivateAll = c.Bool("allow-deactivate-all")
config.AllowDeactivateAll = c.Bool("allow-deactivate-all")
}
return nil
}

// findLdapSecurityProtocolByName finds security protocol by its name ignoring case.
// It returns the value of the security protocol and if it was found.
func findLdapSecurityProtocolByName(name string) (ldap.SecurityProtocol, bool) {
for i, n := range models.SecurityProtocolNames {
for i, n := range ldap.SecurityProtocolNames {
if strings.EqualFold(name, n) {
return i, true
}
Expand Down Expand Up @@ -289,17 +289,15 @@ func (a *authService) addLdapBindDn(c *cli.Context) error {
}

loginSource := &models.LoginSource{
Type: models.LoginLDAP,
IsActived: true, // active by default
Cfg: &models.LDAPConfig{
Source: &ldap.Source{
Enabled: true, // always true
},
Type: models.LoginLDAP,
IsActive: true, // active by default
Cfg: &ldap.Source{
Enabled: true, // always true
},
}

parseLoginSource(c, loginSource)
if err := parseLdapConfig(c, loginSource.LDAP()); err != nil {
if err := parseLdapConfig(c, loginSource.Cfg.(*ldap.Source)); err != nil {
return err
}

Expand All @@ -318,7 +316,7 @@ func (a *authService) updateLdapBindDn(c *cli.Context) error {
}

parseLoginSource(c, loginSource)
if err := parseLdapConfig(c, loginSource.LDAP()); err != nil {
if err := parseLdapConfig(c, loginSource.Cfg.(*ldap.Source)); err != nil {
return err
}

Expand All @@ -336,17 +334,15 @@ func (a *authService) addLdapSimpleAuth(c *cli.Context) error {
}

loginSource := &models.LoginSource{
Type: models.LoginDLDAP,
IsActived: true, // active by default
Cfg: &models.LDAPConfig{
Source: &ldap.Source{
Enabled: true, // always true
},
Type: models.LoginDLDAP,
IsActive: true, // active by default
Cfg: &ldap.Source{
Enabled: true, // always true
},
}

parseLoginSource(c, loginSource)
if err := parseLdapConfig(c, loginSource.LDAP()); err != nil {
if err := parseLdapConfig(c, loginSource.Cfg.(*ldap.Source)); err != nil {
return err
}

Expand All @@ -365,7 +361,7 @@ func (a *authService) updateLdapSimpleAuth(c *cli.Context) error {
}

parseLoginSource(c, loginSource)
if err := parseLdapConfig(c, loginSource.LDAP()); err != nil {
if err := parseLdapConfig(c, loginSource.Cfg.(*ldap.Source)); err != nil {
return err
}

Expand Down
Loading