From a098da747052eb8d9f612f78dece8ac027a72caa Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 12 May 2011 18:18:20 -0400
Subject: [PATCH] Improvements to create/edit user.

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

diff --git a/src/com/gitblit/wicket/pages/EditUserPage.java b/src/com/gitblit/wicket/pages/EditUserPage.java
index d1faa78..7522f3e 100644
--- a/src/com/gitblit/wicket/pages/EditUserPage.java
+++ b/src/com/gitblit/wicket/pages/EditUserPage.java
@@ -1,5 +1,6 @@
 package com.gitblit.wicket.pages;
 
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -71,8 +72,25 @@
 
 			private static final long serialVersionUID = 1L;
 
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see org.apache.wicket.markup.html.form.Form#onSubmit()
+			 */
 			@Override
 			protected void onSubmit() {
+				String username = userModel.getUsername();
+				if (StringUtils.isEmpty(username)) {
+					error("Please enter a username!");
+					return;
+				}
+				if (isCreate) {
+					UserModel model = GitBlit.self().getUserModel(username);
+					if (model != null) {
+						error(MessageFormat.format("Username {0} is unavailable.", username));
+						return;
+					}
+				}
 				if (!userModel.getPassword().equals(confirmPassword.getObject())) {
 					error("Passwords do not match!");
 					return;
@@ -80,6 +98,16 @@
 				String password = userModel.getPassword();
 				if (!password.toUpperCase().startsWith(Crypt.__TYPE) && !password.toUpperCase().startsWith(MD5.__TYPE)) {
 					// This is a plain text password.
+					// Check length.
+					int minLength = GitBlit.self().settings().getInteger(Keys.realm.minPasswordLength, 5);
+					if (minLength < 4) {
+						minLength = 4;
+					}
+					if (password.trim().length() < minLength) {
+						error(MessageFormat.format("Password is too short. Minimum length is {0} characters.", minLength));
+						return;
+					}
+					
 					// Optionally encrypt/obfuscate the password.
 					String type = GitBlit.self().settings().getString(Keys.realm.passwordStorage, "md5");
 					if (type.equalsIgnoreCase("md5")) {
@@ -103,9 +131,10 @@
 					error(e.getMessage());
 					return;
 				}
-				setRedirect(true);
+				setRedirect(false);
 				if (isCreate) {
 					// create another user
+					info(MessageFormat.format("New user {0} successfully created.", userModel.getUsername()));
 					setResponsePage(EditUserPage.class);
 				} else {
 					// back to home

--
Gitblit v1.9.1