mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Map OIDC groups to Orgs/Teams (#21441)
Fixes #19555 Test-Instructions: https://github.com/go-gitea/gitea/pull/21441#issuecomment-1419438000 This PR implements the mapping of user groups provided by OIDC providers to orgs teams in Gitea. The main part is a refactoring of the existing LDAP code to make it usable from different providers. Refactorings: - Moved the router auth code from module to service because of import cycles - Changed some model methods to take a `Context` parameter - Moved the mapping code from LDAP to a common location I've tested it with Keycloak but other providers should work too. The JSON mapping format is the same as for LDAP.  --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		@@ -61,28 +61,28 @@ func TestUser_IsOrgMember(t *testing.T) {
 | 
			
		||||
func TestUser_GetTeam(t *testing.T) {
 | 
			
		||||
	assert.NoError(t, unittest.PrepareTestDatabase())
 | 
			
		||||
	org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
 | 
			
		||||
	team, err := org.GetTeam("team1")
 | 
			
		||||
	team, err := org.GetTeam(db.DefaultContext, "team1")
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, org.ID, team.OrgID)
 | 
			
		||||
	assert.Equal(t, "team1", team.LowerName)
 | 
			
		||||
 | 
			
		||||
	_, err = org.GetTeam("does not exist")
 | 
			
		||||
	_, err = org.GetTeam(db.DefaultContext, "does not exist")
 | 
			
		||||
	assert.True(t, organization.IsErrTeamNotExist(err))
 | 
			
		||||
 | 
			
		||||
	nonOrg := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 2})
 | 
			
		||||
	_, err = nonOrg.GetTeam("team")
 | 
			
		||||
	_, err = nonOrg.GetTeam(db.DefaultContext, "team")
 | 
			
		||||
	assert.True(t, organization.IsErrTeamNotExist(err))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestUser_GetOwnerTeam(t *testing.T) {
 | 
			
		||||
	assert.NoError(t, unittest.PrepareTestDatabase())
 | 
			
		||||
	org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
 | 
			
		||||
	team, err := org.GetOwnerTeam()
 | 
			
		||||
	team, err := org.GetOwnerTeam(db.DefaultContext)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, org.ID, team.OrgID)
 | 
			
		||||
 | 
			
		||||
	nonOrg := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 2})
 | 
			
		||||
	_, err = nonOrg.GetOwnerTeam()
 | 
			
		||||
	_, err = nonOrg.GetOwnerTeam(db.DefaultContext)
 | 
			
		||||
	assert.True(t, organization.IsErrTeamNotExist(err))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -115,15 +115,15 @@ func TestUser_GetMembers(t *testing.T) {
 | 
			
		||||
func TestGetOrgByName(t *testing.T) {
 | 
			
		||||
	assert.NoError(t, unittest.PrepareTestDatabase())
 | 
			
		||||
 | 
			
		||||
	org, err := organization.GetOrgByName("user3")
 | 
			
		||||
	org, err := organization.GetOrgByName(db.DefaultContext, "user3")
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.EqualValues(t, 3, org.ID)
 | 
			
		||||
	assert.Equal(t, "user3", org.Name)
 | 
			
		||||
 | 
			
		||||
	_, err = organization.GetOrgByName("user2") // user2 is an individual
 | 
			
		||||
	_, err = organization.GetOrgByName(db.DefaultContext, "user2") // user2 is an individual
 | 
			
		||||
	assert.True(t, organization.IsErrOrgNotExist(err))
 | 
			
		||||
 | 
			
		||||
	_, err = organization.GetOrgByName("") // corner case
 | 
			
		||||
	_, err = organization.GetOrgByName(db.DefaultContext, "") // corner case
 | 
			
		||||
	assert.True(t, organization.IsErrOrgNotExist(err))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user