From ddb15dbe9e592c60c842fe8c2a2cdeef56244474 Mon Sep 17 00:00:00 2001
From: Soeren Grunewald <soeren.grunewald@desy.de>
Date: Thu, 04 Sep 2014 12:05:51 -0400
Subject: [PATCH] distrib: Add script to install gitblit on fedora
---
src/main/java/com/gitblit/manager/UserManager.java | 142 +++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 131 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/gitblit/manager/UserManager.java b/src/main/java/com/gitblit/manager/UserManager.java
index 3ca62e2..2b82ffb 100644
--- a/src/main/java/com/gitblit/manager/UserManager.java
+++ b/src/main/java/com/gitblit/manager/UserManager.java
@@ -28,9 +28,11 @@
import org.slf4j.LoggerFactory;
import com.gitblit.ConfigUserService;
+import com.gitblit.Constants;
import com.gitblit.IStoredSettings;
import com.gitblit.IUserService;
import com.gitblit.Keys;
+import com.gitblit.extensions.UserTeamLifeCycleListener;
import com.gitblit.models.TeamModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
@@ -49,13 +51,16 @@
private final IRuntimeManager runtimeManager;
+ private final IPluginManager pluginManager;
+
private final Map<String, String> legacyBackingServices;
private IUserService userService;
- public UserManager(IRuntimeManager runtimeManager) {
+ public UserManager(IRuntimeManager runtimeManager, IPluginManager pluginManager) {
this.settings = runtimeManager.getSettings();
this.runtimeManager = runtimeManager;
+ this.pluginManager = pluginManager;
// map of legacy realm backing user services
legacyBackingServices = new HashMap<String, String>();
@@ -93,10 +98,10 @@
// create the user service from the legacy config
String realmKey = legacyBackingServices.get(realm);
logger.warn("");
- logger.warn("#################################################################");
+ logger.warn(Constants.BORDER2);
logger.warn(" Key '{}' is obsolete!", realmKey);
logger.warn(" Please set '{}={}'", Keys.realm.userService, settings.getString(realmKey, "${baseFolder}/users.conf"));
- logger.warn("#################################################################");
+ logger.warn(Constants.BORDER2);
logger.warn("");
File realmFile = runtimeManager.getFileOrFolder(realmKey, "${baseFolder}/users.conf");
service = createUserService(realmFile);
@@ -149,6 +154,19 @@
}
/**
+ * Returns true if the username represents an internal account
+ *
+ * @param username
+ * @return true if the specified username represents an internal account
+ */
+ @Override
+ public boolean isInternalAccount(String username) {
+ return !StringUtils.isEmpty(username)
+ && (username.equalsIgnoreCase(Constants.FEDERATION_USER)
+ || username.equalsIgnoreCase(UserModel.ANONYMOUS.username));
+ }
+
+ /**
* Returns the cookie value for the specified user.
*
* @param model
@@ -195,7 +213,14 @@
*/
@Override
public boolean updateUserModel(UserModel model) {
- return userService.updateUserModel(model);
+ final boolean isCreate = null == userService.getUserModel(model.username);
+ if (userService.updateUserModel(model)) {
+ if (isCreate) {
+ callCreateUserListeners(model);
+ }
+ return true;
+ }
+ return false;
}
/**
@@ -222,7 +247,14 @@
*/
@Override
public boolean updateUserModel(String username, UserModel model) {
- return userService.updateUserModel(username, model);
+ final boolean isCreate = null == userService.getUserModel(username);
+ if (userService.updateUserModel(username, model)) {
+ if (isCreate) {
+ callCreateUserListeners(model);
+ }
+ return true;
+ }
+ return false;
}
/**
@@ -233,7 +265,11 @@
*/
@Override
public boolean deleteUserModel(UserModel model) {
- return userService.deleteUserModel(model);
+ if (userService.deleteUserModel(model)) {
+ callDeleteUserListeners(model);
+ return true;
+ }
+ return false;
}
/**
@@ -248,7 +284,12 @@
return false;
}
String usernameDecoded = StringUtils.decodeUsername(username);
- return userService.deleteUser(usernameDecoded);
+ UserModel user = getUserModel(usernameDecoded);
+ if (userService.deleteUser(usernameDecoded)) {
+ callDeleteUserListeners(user);
+ return true;
+ }
+ return false;
}
/**
@@ -335,7 +376,14 @@
*/
@Override
public boolean updateTeamModel(TeamModel model) {
- return userService.updateTeamModel(model);
+ final boolean isCreate = null == userService.getTeamModel(model.name);
+ if (userService.updateTeamModel(model)) {
+ if (isCreate) {
+ callCreateTeamListeners(model);
+ }
+ return true;
+ }
+ return false;
}
/**
@@ -363,7 +411,14 @@
*/
@Override
public boolean updateTeamModel(String teamname, TeamModel model) {
- return userService.updateTeamModel(teamname, model);
+ final boolean isCreate = null == userService.getTeamModel(teamname);
+ if (userService.updateTeamModel(teamname, model)) {
+ if (isCreate) {
+ callCreateTeamListeners(model);
+ }
+ return true;
+ }
+ return false;
}
/**
@@ -375,7 +430,11 @@
*/
@Override
public boolean deleteTeamModel(TeamModel model) {
- return userService.deleteTeamModel(model);
+ if (userService.deleteTeamModel(model)) {
+ callDeleteTeamListeners(model);
+ return true;
+ }
+ return false;
}
/**
@@ -387,7 +446,12 @@
*/
@Override
public boolean deleteTeam(String teamname) {
- return userService.deleteTeam(teamname);
+ TeamModel team = userService.getTeamModel(teamname);
+ if (userService.deleteTeam(teamname)) {
+ callDeleteTeamListeners(team);
+ return true;
+ }
+ return false;
}
/**
@@ -426,4 +490,60 @@
public boolean deleteRepositoryRole(String role) {
return userService.deleteRepositoryRole(role);
}
+
+ protected void callCreateUserListeners(UserModel user) {
+ if (pluginManager == null || user == null) {
+ return;
+ }
+
+ for (UserTeamLifeCycleListener listener : pluginManager.getExtensions(UserTeamLifeCycleListener.class)) {
+ try {
+ listener.onCreation(user);
+ } catch (Throwable t) {
+ logger.error(String.format("failed to call plugin.onCreation%s", user.username), t);
+ }
+ }
+ }
+
+ protected void callCreateTeamListeners(TeamModel team) {
+ if (pluginManager == null || team == null) {
+ return;
+ }
+
+ for (UserTeamLifeCycleListener listener : pluginManager.getExtensions(UserTeamLifeCycleListener.class)) {
+ try {
+ listener.onCreation(team);
+ } catch (Throwable t) {
+ logger.error(String.format("failed to call plugin.onCreation %s", team.name), t);
+ }
+ }
+ }
+
+ protected void callDeleteUserListeners(UserModel user) {
+ if (pluginManager == null || user == null) {
+ return;
+ }
+
+ for (UserTeamLifeCycleListener listener : pluginManager.getExtensions(UserTeamLifeCycleListener.class)) {
+ try {
+ listener.onDeletion(user);
+ } catch (Throwable t) {
+ logger.error(String.format("failed to call plugin.onDeletion %s", user.username), t);
+ }
+ }
+ }
+
+ protected void callDeleteTeamListeners(TeamModel team) {
+ if (pluginManager == null || team == null) {
+ return;
+ }
+
+ for (UserTeamLifeCycleListener listener : pluginManager.getExtensions(UserTeamLifeCycleListener.class)) {
+ try {
+ listener.onDeletion(team);
+ } catch (Throwable t) {
+ logger.error(String.format("failed to call plugin.onDeletion %s", team.name), t);
+ }
+ }
+ }
}
--
Gitblit v1.9.1