From 139c6da46a9f8beb151d502d3eae555f03ed3302 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 13 Jul 2013 12:19:02 -0400
Subject: [PATCH] Setting a null permission now removes the permission from the user or  team (issue-259)

---
 src/main/java/com/gitblit/models/UserModel.java |    8 +++++++-
 src/main/java/com/gitblit/models/TeamModel.java |   11 +++++++++--
 releases.moxie                                  |    1 +
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/releases.moxie b/releases.moxie
index 811cd85..85419d6 100644
--- a/releases.moxie
+++ b/releases.moxie
@@ -49,6 +49,7 @@
 	 - Improve NPE handling for hook script enumeration (issue-253)
 	 - Workaround missing commit information in blame page (JGit bug 374382, issue-254) 
 	 - Ignore orphan ".git" folder in the repositories root folder (issue-256)
+	 - Fixed bug where a null permission was added to a user model on a repository rename when the permission had really been inherited from a team membership (issue-259)
 	 - Fixed committer verification with merge commits (issue-264)
      - Could not reset settings with $ or { characters through Gitblit Manager because they are not properly escaped
 	 - Added more error checking to blob page and blame page
diff --git a/src/main/java/com/gitblit/models/TeamModel.java b/src/main/java/com/gitblit/models/TeamModel.java
index e0499f7..dfbd45d 100644
--- a/src/main/java/com/gitblit/models/TeamModel.java
+++ b/src/main/java/com/gitblit/models/TeamModel.java
@@ -186,8 +186,15 @@
 	}
 	
 	public void setRepositoryPermission(String repository, AccessPermission permission) {
-		permissions.put(repository.toLowerCase(), permission);
-		repositories.add(repository.toLowerCase());
+		if (permission == null) {
+			// remove the permission
+			permissions.remove(repository.toLowerCase());
+			repositories.remove(repository.toLowerCase());
+		} else {
+			// set the new permission
+			permissions.put(repository.toLowerCase(), permission);
+			repositories.add(repository.toLowerCase());
+		}
 	}
 	
 	public RegistrantAccessPermission getRepositoryPermission(RepositoryModel repository) {
diff --git a/src/main/java/com/gitblit/models/UserModel.java b/src/main/java/com/gitblit/models/UserModel.java
index b480b88..6d58512 100644
--- a/src/main/java/com/gitblit/models/UserModel.java
+++ b/src/main/java/com/gitblit/models/UserModel.java
@@ -273,7 +273,13 @@
 	}
 		
 	public void setRepositoryPermission(String repository, AccessPermission permission) {
-		permissions.put(repository.toLowerCase(), permission);
+		if (permission == null) {
+			// remove the permission
+			permissions.remove(repository.toLowerCase());
+		} else {
+			// set the new permission
+			permissions.put(repository.toLowerCase(), permission);
+		}
 	}
 
 	public RegistrantAccessPermission getRepositoryPermission(RepositoryModel repository) {

--
Gitblit v1.9.1