From b94965e87929c6b4e42f9a2078dc0d910cc2637d Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 09 May 2012 07:59:00 -0400 Subject: [PATCH] Merge pull request #17 from peterloron/master --- src/com/gitblit/FileUserService.java | 73 ++++++++++++++++++++++++++++++++---- 1 files changed, 65 insertions(+), 8 deletions(-) diff --git a/src/com/gitblit/FileUserService.java b/src/com/gitblit/FileUserService.java index 37ca9a7..fcb8eae 100644 --- a/src/com/gitblit/FileUserService.java +++ b/src/com/gitblit/FileUserService.java @@ -74,6 +74,49 @@ } /** + * Does the user service support changes to credentials? + * + * @return true or false + * @since 1.0.0 + */ + @Override + public boolean supportsCredentialChanges() { + return true; + } + + /** + * Does the user service support changes to user display name? + * + * @return true or false + * @since 1.0.0 + */ + @Override + public boolean supportsDisplayNameChanges() { + return false; + } + + /** + * Does the user service support changes to user email address? + * + * @return true or false + * @since 1.0.0 + */ + @Override + public boolean supportsEmailAddressChanges() { + return false; + } + + /** + * Does the user service support changes to team memberships? + * + * @return true or false + * @since 1.0.0 + */ + public boolean supportsTeamMembershipChanges() { + return true; + } + + /** * Does the user service support cookie authentication? * * @return true or false @@ -157,6 +200,15 @@ } /** + * Logout a user. + * + * @param user + */ + @Override + public void logout(UserModel user) { + } + + /** * Retrieve the user object for the specified username. * * @param username @@ -165,11 +217,11 @@ @Override public UserModel getUserModel(String username) { Properties allUsers = read(); - String userInfo = allUsers.getProperty(username); + String userInfo = allUsers.getProperty(username.toLowerCase()); if (userInfo == null) { return null; } - UserModel model = new UserModel(username); + UserModel model = new UserModel(username.toLowerCase()); String[] userValues = userInfo.split(","); model.password = userValues[0]; for (int i = 1; i < userValues.length; i++) { @@ -219,7 +271,7 @@ */ @Override public boolean updateUserModel(String username, UserModel model) { - try { + try { Properties allUsers = read(); UserModel oldUser = getUserModel(username); ArrayList<String> roles = new ArrayList<String>(model.repositories); @@ -233,7 +285,9 @@ } StringBuilder sb = new StringBuilder(); - sb.append(model.password); + if (!StringUtils.isEmpty(model.password)) { + sb.append(model.password); + } sb.append(','); for (String role : roles) { sb.append(role); @@ -241,8 +295,8 @@ } // trim trailing comma sb.setLength(sb.length() - 1); - allUsers.remove(username); - allUsers.put(model.username, sb.toString()); + allUsers.remove(username.toLowerCase()); + allUsers.put(model.username.toLowerCase(), sb.toString()); // null check on "final" teams because JSON-sourced UserModel // can have a null teams object @@ -624,8 +678,9 @@ @Override protected synchronized Properties read() { long lastRead = lastModified(); + boolean reload = forceReload(); Properties allUsers = super.read(); - if (lastRead != lastModified()) { + if (reload || (lastRead != lastModified())) { // reload hash cache cookies.clear(); teams.clear(); @@ -657,11 +712,13 @@ team.addRepositories(repositories); team.addUsers(users); team.addMailingLists(mailingLists); + team.preReceiveScripts.addAll(preReceive); + team.postReceiveScripts.addAll(postReceive); teams.put(team.name.toLowerCase(), team); } else { // user definition String password = roles[0]; - cookies.put(StringUtils.getSHA1(username + password), username); + cookies.put(StringUtils.getSHA1(username.toLowerCase() + password), username.toLowerCase()); } } } -- Gitblit v1.9.1