mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Allow adding collaborators with (fullname) (#3103)
* Allow adding collaborators with (fullname) Signed-off-by: Sasha Varlamov <sasha@sashavarlamov.com> * Refactor username suffix to utils pkg Signed-off-by: Sasha Varlamov <sasha@sashavarlamov.com>
This commit is contained in:
		
				
					committed by
					
						
						Lunny Xiao
					
				
			
			
				
	
			
			
			
						parent
						
							7ec6cddd27
						
					
				
				
					commit
					311c83ad17
				
			@@ -15,6 +15,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/modules/base"
 | 
			
		||||
	"code.gitea.io/gitea/modules/context"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/routers/utils"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -76,11 +77,7 @@ func TeamsAction(ctx *context.Context) {
 | 
			
		||||
			ctx.Error(404)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		uname := ctx.Query("uname")
 | 
			
		||||
		// uname may be formatted as "username (fullname)"
 | 
			
		||||
		if strings.Contains(uname, "(") && strings.HasSuffix(uname, ")") {
 | 
			
		||||
			uname = strings.TrimSpace(strings.Split(uname, "(")[0])
 | 
			
		||||
		}
 | 
			
		||||
		uname := utils.RemoveUsernameParameterSuffix(strings.ToLower(ctx.Query("uname")))
 | 
			
		||||
		var u *models.User
 | 
			
		||||
		u, err = models.GetUserByName(uname)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/modules/context"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/routers/utils"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -366,7 +367,7 @@ func Collaboration(ctx *context.Context) {
 | 
			
		||||
 | 
			
		||||
// CollaborationPost response for actions for a collaboration of a repository
 | 
			
		||||
func CollaborationPost(ctx *context.Context) {
 | 
			
		||||
	name := strings.ToLower(ctx.Query("collaborator"))
 | 
			
		||||
	name := utils.RemoveUsernameParameterSuffix(strings.ToLower(ctx.Query("collaborator")))
 | 
			
		||||
	if len(name) == 0 || ctx.Repo.Owner.LowerName == name {
 | 
			
		||||
		ctx.Redirect(setting.AppSubURL + ctx.Req.URL.Path)
 | 
			
		||||
		return
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								routers/utils/utils.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								routers/utils/utils.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
// Copyright 2017 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package utils
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// RemoveUsernameParameterSuffix returns the username parameter without the (fullname) suffix - leaving just the username
 | 
			
		||||
func RemoveUsernameParameterSuffix(name string) string {
 | 
			
		||||
	if index := strings.Index(name, " ("); index >= 0 {
 | 
			
		||||
		name = name[:index]
 | 
			
		||||
	}
 | 
			
		||||
	return name
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								routers/utils/utils_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								routers/utils/utils_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
// Copyright 2017 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package utils
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestRemoveUsernameParameterSuffix(t *testing.T) {
 | 
			
		||||
	assert.Equal(t, "foobar", RemoveUsernameParameterSuffix("foobar (Foo Bar)"))
 | 
			
		||||
	assert.Equal(t, "foobar", RemoveUsernameParameterSuffix("foobar"))
 | 
			
		||||
	assert.Equal(t, "", RemoveUsernameParameterSuffix(""))
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user