From 5316d20e861640867d10405b25cfe75aeca0a34c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 11 Jan 2013 23:50:59 -0500
Subject: [PATCH] Fanout service for Sparkleshare clients

---
 src/com/gitblit/models/UserModel.java |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/src/com/gitblit/models/UserModel.java b/src/com/gitblit/models/UserModel.java
index bd40985..54e81cb 100644
--- a/src/com/gitblit/models/UserModel.java
+++ b/src/com/gitblit/models/UserModel.java
@@ -29,6 +29,7 @@
 
 import com.gitblit.Constants.AccessPermission;
 import com.gitblit.Constants.AccessRestrictionType;
+import com.gitblit.Constants.AccountType;
 import com.gitblit.Constants.AuthorizationControl;
 import com.gitblit.Constants.PermissionType;
 import com.gitblit.Constants.RegistrantType;
@@ -73,15 +74,22 @@
 
 	// non-persisted fields
 	public boolean isAuthenticated;
+	public AccountType accountType;
 	
 	public UserModel(String username) {
 		this.username = username;
 		this.isAuthenticated = true;
+		this.accountType = AccountType.LOCAL;
 	}
 
 	private UserModel() {
 		this.username = "$anonymous";
 		this.isAuthenticated = false;
+		this.accountType = AccountType.LOCAL;
+	}
+	
+	public boolean isLocalAccount() {
+		return accountType.isLocal();
 	}
 
 	/**
@@ -360,6 +368,12 @@
 	public boolean canView(RepositoryModel repository) {
 		return canAccess(repository, AccessRestrictionType.VIEW, AccessPermission.VIEW);
 	}
+	
+	public boolean canView(RepositoryModel repository, String ref) {
+		// Default UserModel doesn't implement ref-level security.
+		// Other Realms (i.e. Gerrit) may override this method.
+		return canView(repository);
+	}
 
 	public boolean canClone(RepositoryModel repository) {
 		return canAccess(repository, AccessRestrictionType.CLONE, AccessPermission.CLONE);
@@ -587,9 +601,10 @@
 		return nameVerified && emailVerified;
 	}
 	
+	@Deprecated
 	public boolean hasBranchPermission(String repositoryName, String branch) {
 		// Default UserModel doesn't implement branch-level security. Other Realms (i.e. Gerrit) may override this method.
-		return hasRepositoryPermission(repositoryName);
+		return hasRepositoryPermission(repositoryName) || hasTeamRepositoryPermission(repositoryName);
 	}
 	
 	public boolean isMyPersonalRepository(String repository) {

--
Gitblit v1.9.1