From 41dbb4c148cef33984a268e2e891b09fa10b3d94 Mon Sep 17 00:00:00 2001
From: Unknwon <joe2010xtmf@163.com>
Date: Fri, 10 Oct 2014 06:15:27 -0400
Subject: Hide org member in collar page

---
 routers/repo/setting.go | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

(limited to 'routers/repo/setting.go')

diff --git a/routers/repo/setting.go b/routers/repo/setting.go
index 0e58029ec3..971c5bef2a 100644
--- a/routers/repo/setting.go
+++ b/routers/repo/setting.go
@@ -196,9 +196,16 @@ func SettingsCollaboration(ctx *middleware.Context) {
 			return
 		}
 
+		// Check if user is organization member.
+		if ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgMember(u.Id) {
+			ctx.Flash.Info(ctx.Tr("repo.settings.user_is_org_member"))
+			ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
+			return
+		}
+
 		if err = models.AddAccess(&models.Access{UserName: name, RepoName: repoLink,
 			Mode: models.WRITABLE}); err != nil {
-			ctx.Handle(500, "AddAccess2", err)
+			ctx.Handle(500, "AddAccess", err)
 			return
 		}
 
@@ -247,16 +254,20 @@ func SettingsCollaboration(ctx *middleware.Context) {
 		return
 	}
 
-	us := make([]*models.User, len(names))
-	for i, name := range names {
-		us[i], err = models.GetUserByName(name)
+	collaborators := make([]*models.User, 0, len(names))
+	for _, name := range names {
+		u, err := models.GetUserByName(name)
 		if err != nil {
 			ctx.Handle(500, "GetUserByName", err)
 			return
 		}
+		// Does not show organization members.
+		if ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgMember(u.Id) {
+			continue
+		}
+		collaborators = append(collaborators, u)
 	}
-
-	ctx.Data["Collaborators"] = us
+	ctx.Data["Collaborators"] = collaborators
 	ctx.HTML(200, COLLABORATION)
 }
 
-- 
cgit v1.2.3