From 72cb19b84e87e63770391a37ea3872f963574869 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 21 Oct 2012 22:04:35 -0400
Subject: [PATCH] Implemented optional create-on-push

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

diff --git a/src/com/gitblit/models/UserModel.java b/src/com/gitblit/models/UserModel.java
index fc9cbfb..7995f7e 100644
--- a/src/com/gitblit/models/UserModel.java
+++ b/src/com/gitblit/models/UserModel.java
@@ -364,6 +364,28 @@
 		}
 		return false;
 	}
+	
+	/**
+	 * Returns true if the user is allowed to create the specified repository
+	 * on-push if the repository does not already exist.
+	 * 
+	 * @param repository
+	 * @return true if the user can create the repository
+	 */
+	public boolean canCreateOnPush(String repository) {
+		if (canAdmin()) {
+			// admins can create any repository
+			return true;
+		}
+		if (canCreate) {
+			String projectPath = StringUtils.getFirstPathElement(repository);
+			if (!StringUtils.isEmpty(projectPath) && projectPath.equalsIgnoreCase("~" + username)) {
+				// personal repository
+				return true;
+			}
+		}
+		return false;
+	}
 
 	public boolean isTeamMember(String teamname) {
 		for (TeamModel team : teams) {

--
Gitblit v1.9.1