From f3b625d298bab922c64192c25914e352bd87e59e Mon Sep 17 00:00:00 2001
From: John Crygier <john.crygier@aon.com>
Date: Tue, 10 Apr 2012 13:48:06 -0400
Subject: [PATCH] Rework LDAP implementation with unboundid.  Also allows for an LDAP server to be started with Gitblit GO (backed by an LDIF file).

---
 src/com/gitblit/wicket/pages/EditUserPage.java |   64 ++++++++++++++++---------------
 1 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/EditUserPage.java b/src/com/gitblit/wicket/pages/EditUserPage.java
index e7b4287..103d672 100644
--- a/src/com/gitblit/wicket/pages/EditUserPage.java
+++ b/src/com/gitblit/wicket/pages/EditUserPage.java
@@ -129,40 +129,42 @@
 				}
 				boolean rename = !StringUtils.isEmpty(oldName)
 						&& !oldName.equalsIgnoreCase(username);
-				if (!userModel.password.equals(confirmPassword.getObject())) {
-					error(getString("gb.passwordsDoNotMatch"));
-					return;
-				}
-				String password = userModel.password;
-				if (!password.toUpperCase().startsWith(StringUtils.MD5_TYPE)
-						&& !password.toUpperCase().startsWith(StringUtils.COMBINED_MD5_TYPE)) {
-					// This is a plain text password.
-					// Check length.
-					int minLength = GitBlit.getInteger(Keys.realm.minPasswordLength, 5);
-					if (minLength < 4) {
-						minLength = 4;
-					}
-					if (password.trim().length() < minLength) {
-						error(MessageFormat.format(getString("gb.passwordTooShort"),
-								minLength));
+				if (GitBlit.self().supportsCredentialChanges()) {
+					if (!userModel.password.equals(confirmPassword.getObject())) {
+						error(getString("gb.passwordsDoNotMatch"));
 						return;
 					}
-
-					// Optionally store the password MD5 digest.
-					String type = GitBlit.getString(Keys.realm.passwordStorage, "md5");
-					if (type.equalsIgnoreCase("md5")) {
-						// store MD5 digest of password
-						userModel.password = StringUtils.MD5_TYPE
-								+ StringUtils.getMD5(userModel.password);
-					} else if (type.equalsIgnoreCase("combined-md5")) {
-						// store MD5 digest of username+password
-						userModel.password = StringUtils.COMBINED_MD5_TYPE
-								+ StringUtils.getMD5(username + userModel.password);
+					String password = userModel.password;
+					if (!password.toUpperCase().startsWith(StringUtils.MD5_TYPE)
+							&& !password.toUpperCase().startsWith(StringUtils.COMBINED_MD5_TYPE)) {
+						// This is a plain text password.
+						// Check length.
+						int minLength = GitBlit.getInteger(Keys.realm.minPasswordLength, 5);
+						if (minLength < 4) {
+							minLength = 4;
+						}
+						if (password.trim().length() < minLength) {
+							error(MessageFormat.format(getString("gb.passwordTooShort"),
+									minLength));
+							return;
+						}
+	
+						// Optionally store the password MD5 digest.
+						String type = GitBlit.getString(Keys.realm.passwordStorage, "md5");
+						if (type.equalsIgnoreCase("md5")) {
+							// store MD5 digest of password
+							userModel.password = StringUtils.MD5_TYPE
+									+ StringUtils.getMD5(userModel.password);
+						} else if (type.equalsIgnoreCase("combined-md5")) {
+							// store MD5 digest of username+password
+							userModel.password = StringUtils.COMBINED_MD5_TYPE
+									+ StringUtils.getMD5(username + userModel.password);
+						}
+					} else if (rename
+							&& password.toUpperCase().startsWith(StringUtils.COMBINED_MD5_TYPE)) {
+						error(getString("gb.combinedMd5Rename"));
+						return;
 					}
-				} else if (rename
-						&& password.toUpperCase().startsWith(StringUtils.COMBINED_MD5_TYPE)) {
-					error(getString("gb.combinedMd5Rename"));
-					return;
 				}
 
 				Iterator<String> selectedRepositories = repositories.getSelectedChoices();

--
Gitblit v1.9.1