mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add restricted user filter to LDAP authentication (#10600)
* Add restricted user filter to LDAP authentification * Fix unit test cases
This commit is contained in:
		@@ -61,6 +61,10 @@ var (
 | 
			
		||||
			Name:  "admin-filter",
 | 
			
		||||
			Usage: "An LDAP filter specifying if a user should be given administrator privileges.",
 | 
			
		||||
		},
 | 
			
		||||
		cli.StringFlag{
 | 
			
		||||
			Name:  "restricted-filter",
 | 
			
		||||
			Usage: "An LDAP filter specifying if a user should be given restricted status.",
 | 
			
		||||
		},
 | 
			
		||||
		cli.BoolFlag{
 | 
			
		||||
			Name:  "allow-deactivate-all",
 | 
			
		||||
			Usage: "Allow empty search results to deactivate all users.",
 | 
			
		||||
@@ -235,6 +239,9 @@ func parseLdapConfig(c *cli.Context, config *models.LDAPConfig) error {
 | 
			
		||||
	if c.IsSet("admin-filter") {
 | 
			
		||||
		config.Source.AdminFilter = c.String("admin-filter")
 | 
			
		||||
	}
 | 
			
		||||
	if c.IsSet("restricted-filter") {
 | 
			
		||||
		config.Source.RestrictedFilter = c.String("restricted-filter")
 | 
			
		||||
	}
 | 
			
		||||
	if c.IsSet("allow-deactivate-all") {
 | 
			
		||||
		config.Source.AllowDeactivateAll = c.Bool("allow-deactivate-all")
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@ func TestAddLdapBindDn(t *testing.T) {
 | 
			
		||||
				"--user-search-base", "ou=Users,dc=full-domain-bind,dc=org",
 | 
			
		||||
				"--user-filter", "(memberOf=cn=user-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
				"--admin-filter", "(memberOf=cn=admin-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
				"--restricted-filter", "(memberOf=cn=restricted-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
				"--username-attribute", "uid-bind full",
 | 
			
		||||
				"--firstname-attribute", "givenName-bind full",
 | 
			
		||||
				"--surname-attribute", "sn-bind full",
 | 
			
		||||
@@ -74,6 +75,7 @@ func TestAddLdapBindDn(t *testing.T) {
 | 
			
		||||
						SearchPageSize:        99,
 | 
			
		||||
						Filter:                "(memberOf=cn=user-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
						AdminFilter:           "(memberOf=cn=admin-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
						RestrictedFilter:      "(memberOf=cn=restricted-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
						Enabled:               true,
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
@@ -265,6 +267,7 @@ func TestAddLdapSimpleAuth(t *testing.T) {
 | 
			
		||||
				"--user-search-base", "ou=Users,dc=full-domain-simple,dc=org",
 | 
			
		||||
				"--user-filter", "(&(objectClass=posixAccount)(full-simple-cn=%s))",
 | 
			
		||||
				"--admin-filter", "(memberOf=cn=admin-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
				"--restricted-filter", "(memberOf=cn=restricted-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
				"--username-attribute", "uid-simple full",
 | 
			
		||||
				"--firstname-attribute", "givenName-simple full",
 | 
			
		||||
				"--surname-attribute", "sn-simple full",
 | 
			
		||||
@@ -292,6 +295,7 @@ func TestAddLdapSimpleAuth(t *testing.T) {
 | 
			
		||||
						AttributeSSHPublicKey: "publickey-simple full",
 | 
			
		||||
						Filter:                "(&(objectClass=posixAccount)(full-simple-cn=%s))",
 | 
			
		||||
						AdminFilter:           "(memberOf=cn=admin-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
						RestrictedFilter:      "(memberOf=cn=restricted-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
						Enabled:               true,
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
@@ -499,6 +503,7 @@ func TestUpdateLdapBindDn(t *testing.T) {
 | 
			
		||||
				"--user-search-base", "ou=Users,dc=full-domain-bind,dc=org",
 | 
			
		||||
				"--user-filter", "(memberOf=cn=user-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
				"--admin-filter", "(memberOf=cn=admin-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
				"--restricted-filter", "(memberOf=cn=restricted-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
				"--username-attribute", "uid-bind full",
 | 
			
		||||
				"--firstname-attribute", "givenName-bind full",
 | 
			
		||||
				"--surname-attribute", "sn-bind full",
 | 
			
		||||
@@ -543,6 +548,7 @@ func TestUpdateLdapBindDn(t *testing.T) {
 | 
			
		||||
						SearchPageSize:        99,
 | 
			
		||||
						Filter:                "(memberOf=cn=user-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
						AdminFilter:           "(memberOf=cn=admin-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
						RestrictedFilter:      "(memberOf=cn=restricted-group,ou=example,dc=full-domain-bind,dc=org)",
 | 
			
		||||
						Enabled:               true,
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
@@ -978,6 +984,7 @@ func TestUpdateLdapSimpleAuth(t *testing.T) {
 | 
			
		||||
				"--user-search-base", "ou=Users,dc=full-domain-simple,dc=org",
 | 
			
		||||
				"--user-filter", "(&(objectClass=posixAccount)(full-simple-cn=%s))",
 | 
			
		||||
				"--admin-filter", "(memberOf=cn=admin-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
				"--restricted-filter", "(memberOf=cn=restricted-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
				"--username-attribute", "uid-simple full",
 | 
			
		||||
				"--firstname-attribute", "givenName-simple full",
 | 
			
		||||
				"--surname-attribute", "sn-simple full",
 | 
			
		||||
@@ -1006,6 +1013,7 @@ func TestUpdateLdapSimpleAuth(t *testing.T) {
 | 
			
		||||
						AttributeSSHPublicKey: "publickey-simple full",
 | 
			
		||||
						Filter:                "(&(objectClass=posixAccount)(full-simple-cn=%s))",
 | 
			
		||||
						AdminFilter:           "(memberOf=cn=admin-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
						RestrictedFilter:      "(memberOf=cn=restricted-group,ou=example,dc=full-domain-simple,dc=org)",
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user