From c890e1f7d3f5cd83025b1d993cedf4990de63897 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 09 Oct 2012 08:01:47 -0400
Subject: [PATCH] Fixed missing translations in Gitblit Manager builds (issue 145)
---
src/com/gitblit/ConfigUserService.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 51 insertions(+), 8 deletions(-)
diff --git a/src/com/gitblit/ConfigUserService.java b/src/com/gitblit/ConfigUserService.java
index b97154f..831ede9 100644
--- a/src/com/gitblit/ConfigUserService.java
+++ b/src/com/gitblit/ConfigUserService.java
@@ -64,6 +64,8 @@
private static final String DISPLAYNAME = "displayName";
private static final String EMAILADDRESS = "emailAddress";
+
+ private static final String COOKIE = "cookie";
private static final String REPOSITORY = "repository";
@@ -163,11 +165,13 @@
* @return cookie value
*/
@Override
- public char[] getCookie(UserModel model) {
+ public String getCookie(UserModel model) {
+ if (!StringUtils.isEmpty(model.cookie)) {
+ return model.cookie;
+ }
read();
UserModel storedModel = users.get(model.username.toLowerCase());
- String cookie = StringUtils.getSHA1(model.username + storedModel.password);
- return cookie.toCharArray();
+ return storedModel.cookie;
}
/**
@@ -275,9 +279,10 @@
*/
@Override
public boolean updateUserModel(String username, UserModel model) {
+ UserModel originalUser = null;
try {
read();
- UserModel oldUser = users.remove(username.toLowerCase());
+ originalUser = users.remove(username.toLowerCase());
users.put(model.username.toLowerCase(), model);
// null check on "final" teams because JSON-sourced UserModel
// can have a null teams object
@@ -297,8 +302,8 @@
}
// check for implicit team removal
- if (oldUser != null) {
- for (TeamModel team : oldUser.teams) {
+ if (originalUser != null) {
+ for (TeamModel team : originalUser.teams) {
if (!model.isTeamMember(team.name)) {
team.removeUser(username);
}
@@ -308,6 +313,13 @@
write();
return true;
} catch (Throwable t) {
+ if (originalUser != null) {
+ // restore original user
+ users.put(originalUser.username.toLowerCase(), originalUser);
+ } else {
+ // drop attempted add
+ users.remove(model.username.toLowerCase());
+ }
logger.error(MessageFormat.format("Failed to update user model {0}!", model.username),
t);
}
@@ -495,13 +507,21 @@
*/
@Override
public boolean updateTeamModel(String teamname, TeamModel model) {
+ TeamModel original = null;
try {
read();
- teams.remove(teamname.toLowerCase());
+ original = teams.remove(teamname.toLowerCase());
teams.put(model.name.toLowerCase(), model);
write();
return true;
} catch (Throwable t) {
+ if (original != null) {
+ // restore original team
+ teams.put(original.name.toLowerCase(), original);
+ } else {
+ // drop attempted add
+ teams.remove(model.name.toLowerCase());
+ }
logger.error(MessageFormat.format("Failed to update team model {0}!", model.name), t);
}
return false;
@@ -715,6 +735,9 @@
if (!StringUtils.isEmpty(model.password)) {
config.setString(USER, model.username, PASSWORD, model.password);
}
+ if (!StringUtils.isEmpty(model.cookie)) {
+ config.setString(USER, model.username, COOKIE, model.cookie);
+ }
if (!StringUtils.isEmpty(model.displayName)) {
config.setString(USER, model.username, DISPLAYNAME, model.displayName);
}
@@ -727,8 +750,20 @@
if (model.canAdmin) {
roles.add(Constants.ADMIN_ROLE);
}
+ if (model.canFork) {
+ roles.add(Constants.FORK_ROLE);
+ }
+ if (model.canCreate) {
+ roles.add(Constants.CREATE_ROLE);
+ }
if (model.excludeFromFederation) {
roles.add(Constants.NOT_FEDERATED_ROLE);
+ }
+ if (roles.size() == 0) {
+ // we do this to ensure that user record with no password
+ // is written. otherwise, StoredConfig optimizes that account
+ // away. :(
+ roles.add(Constants.NO_ROLE);
}
config.setStringList(USER, model.username, ROLE, roles);
@@ -820,11 +855,17 @@
user.password = config.getString(USER, username, PASSWORD);
user.displayName = config.getString(USER, username, DISPLAYNAME);
user.emailAddress = config.getString(USER, username, EMAILADDRESS);
+ user.cookie = config.getString(USER, username, COOKIE);
+ if (StringUtils.isEmpty(user.cookie) && !StringUtils.isEmpty(user.password)) {
+ user.cookie = StringUtils.getSHA1(user.username + user.password);
+ }
// user roles
Set<String> roles = new HashSet<String>(Arrays.asList(config.getStringList(
USER, username, ROLE)));
user.canAdmin = roles.contains(Constants.ADMIN_ROLE);
+ user.canFork = roles.contains(Constants.FORK_ROLE);
+ user.canCreate = roles.contains(Constants.CREATE_ROLE);
user.excludeFromFederation = roles.contains(Constants.NOT_FEDERATED_ROLE);
// repository memberships
@@ -836,7 +877,9 @@
// update cache
users.put(user.username, user);
- cookies.put(StringUtils.getSHA1(user.username + user.password), user);
+ if (!StringUtils.isEmpty(user.cookie)) {
+ cookies.put(user.cookie, user);
+ }
}
// load the teams
--
Gitblit v1.9.1