From 58be4a33a1ca70baae779d80eff5d79ab7c523a3 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 30 Sep 2013 10:10:36 -0400 Subject: [PATCH] Change diffstat character to improve look and layout --- src/main/java/com/gitblit/ConfigUserService.java | 68 +++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gitblit/ConfigUserService.java b/src/main/java/com/gitblit/ConfigUserService.java index 7aa0998..44687b4 100644 --- a/src/main/java/com/gitblit/ConfigUserService.java +++ b/src/main/java/com/gitblit/ConfigUserService.java @@ -37,6 +37,7 @@ import com.gitblit.Constants.AccessPermission; import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; +import com.gitblit.models.UserRepositoryPreferences; import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.DeepCopier; import com.gitblit.utils.StringUtils; @@ -88,6 +89,10 @@ private static final String PRERECEIVE = "preReceiveScript"; private static final String POSTRECEIVE = "postReceiveScript"; + + private static final String STARRED = "starred"; + + private static final String LOCALE = "locale"; private final File realmFile; @@ -181,8 +186,10 @@ if (!StringUtils.isEmpty(model.cookie)) { return model.cookie; } - read(); - UserModel storedModel = users.get(model.username.toLowerCase()); + UserModel storedModel = getUserModel(model.username); + if (storedModel == null) { + return null; + } return storedModel.cookie; } @@ -193,7 +200,7 @@ * @return a user object or null */ @Override - public UserModel authenticate(char[] cookie) { + public synchronized UserModel authenticate(char[] cookie) { String hash = new String(cookie); if (StringUtils.isEmpty(hash)) { return null; @@ -202,6 +209,12 @@ UserModel model = null; if (cookies.containsKey(hash)) { model = cookies.get(hash); + } + + if (model != null) { + // clone the model, otherwise all changes to this object are + // live and unpersisted + model = DeepCopier.copy(model); } return model; } @@ -215,7 +228,6 @@ */ @Override public UserModel authenticate(String username, char[] password) { - read(); UserModel returnedUser = null; UserModel user = getUserModel(username); if (user == null) { @@ -257,7 +269,7 @@ * @return a user object or null */ @Override - public UserModel getUserModel(String username) { + public synchronized UserModel getUserModel(String username) { read(); UserModel model = users.get(username.toLowerCase()); if (model != null) { @@ -287,7 +299,7 @@ * @since 1.2.0 */ @Override - public boolean updateUserModels(Collection<UserModel> models) { + public synchronized boolean updateUserModels(Collection<UserModel> models) { try { read(); for (UserModel model : models) { @@ -339,7 +351,7 @@ * @return true if update is successful */ @Override - public boolean updateUserModel(String username, UserModel model) { + public synchronized boolean updateUserModel(String username, UserModel model) { UserModel originalUser = null; try { read(); @@ -405,7 +417,7 @@ * @return true if successful */ @Override - public boolean deleteUser(String username) { + public synchronized boolean deleteUser(String username) { try { // Read realm file read(); @@ -455,7 +467,7 @@ * @since 0.8.0 */ @Override - public List<TeamModel> getAllTeams() { + public synchronized List<TeamModel> getAllTeams() { read(); List<TeamModel> list = new ArrayList<TeamModel>(teams.values()); list = DeepCopier.copy(list); @@ -472,7 +484,7 @@ * @return list of all usernames that can bypass the access restriction */ @Override - public List<String> getTeamnamesForRepositoryRole(String role) { + public synchronized List<String> getTeamnamesForRepositoryRole(String role) { List<String> list = new ArrayList<String>(); try { read(); @@ -499,7 +511,7 @@ * @return true if successful */ @Override - public boolean setTeamnamesForRepositoryRole(String role, List<String> teamnames) { + public synchronized boolean setTeamnamesForRepositoryRole(String role, List<String> teamnames) { try { Set<String> specifiedTeams = new HashSet<String>(); for (String teamname : teamnames) { @@ -536,7 +548,7 @@ * @since 0.8.0 */ @Override - public TeamModel getTeamModel(String teamname) { + public synchronized TeamModel getTeamModel(String teamname) { read(); TeamModel model = teams.get(teamname.toLowerCase()); if (model != null) { @@ -666,7 +678,7 @@ * @return list of all usernames */ @Override - public List<UserModel> getAllUsers() { + public synchronized List<UserModel> getAllUsers() { read(); List<UserModel> list = new ArrayList<UserModel>(users.values()); list = DeepCopier.copy(list); @@ -683,7 +695,7 @@ * @return list of all usernames that can bypass the access restriction */ @Override - public List<String> getUsernamesForRepositoryRole(String role) { + public synchronized List<String> getUsernamesForRepositoryRole(String role) { List<String> list = new ArrayList<String>(); try { read(); @@ -711,7 +723,7 @@ */ @Override @Deprecated - public boolean setUsernamesForRepositoryRole(String role, List<String> usernames) { + public synchronized boolean setUsernamesForRepositoryRole(String role, List<String> usernames) { try { Set<String> specifiedUsers = new HashSet<String>(); for (String username : usernames) { @@ -748,7 +760,7 @@ * @return true if successful */ @Override - public boolean renameRepositoryRole(String oldRole, String newRole) { + public synchronized boolean renameRepositoryRole(String oldRole, String newRole) { try { read(); // identify users which require role rename @@ -783,7 +795,7 @@ * @return true if successful */ @Override - public boolean deleteRepositoryRole(String role) { + public synchronized boolean deleteRepositoryRole(String role) { try { read(); @@ -846,6 +858,11 @@ if (!StringUtils.isEmpty(model.countryCode)) { config.setString(USER, model.username, COUNTRYCODE, model.countryCode); } + if (model.getPreferences() != null) { + if (!StringUtils.isEmpty(model.getPreferences().locale)) { + config.setString(USER, model.username, LOCALE, model.getPreferences().locale); + } + } // user roles List<String> roles = new ArrayList<String>(); @@ -878,6 +895,14 @@ } } config.setStringList(USER, model.username, REPOSITORY, permissions); + } + + // user preferences + if (model.getPreferences() != null) { + List<String> starred = model.getPreferences().getStarredRepositories(); + if (starred.size() > 0) { + config.setStringList(USER, model.username, STARRED, starred); + } } } @@ -999,6 +1024,7 @@ user.stateProvince = config.getString(USER, username, STATEPROVINCE); user.countryCode = config.getString(USER, username, COUNTRYCODE); user.cookie = config.getString(USER, username, COOKIE); + user.getPreferences().locale = config.getString(USER, username, LOCALE); if (StringUtils.isEmpty(user.cookie) && !StringUtils.isEmpty(user.password)) { user.cookie = StringUtils.getSHA1(user.username + user.password); } @@ -1021,6 +1047,14 @@ } } + // starred repositories + Set<String> starred = new HashSet<String>(Arrays.asList(config + .getStringList(USER, username, STARRED))); + for (String repository : starred) { + UserRepositoryPreferences prefs = user.getPreferences().getRepositoryPreferences(repository); + prefs.starred = true; + } + // update cache users.put(user.username, user); if (!StringUtils.isEmpty(user.cookie)) { -- Gitblit v1.9.1