| | |
| | | if (user == null) { |
| | | user = UserModel.ANONYMOUS; |
| | | } |
| | | String username = UserModel.ANONYMOUS.equals(user) ? "" : user.username; |
| | | String username = encodeUsername(UserModel.ANONYMOUS.equals(user) ? "" : user.username); |
| | | |
| | | List<RepositoryUrl> list = new ArrayList<RepositoryUrl>(); |
| | | // http/https url |
| | |
| | | * @return true if the user service supports credential changes |
| | | */ |
| | | public boolean supportsCredentialChanges(UserModel user) { |
| | | return (user != null && user.isLocalAccount()) || userService.supportsCredentialChanges(); |
| | | if (user == null) { |
| | | return false; |
| | | } else if (!Constants.EXTERNAL_ACCOUNT.equals(user.password)) { |
| | | // credentials likely maintained by Gitblit |
| | | return userService.supportsCredentialChanges(); |
| | | } else { |
| | | // credentials are externally maintained |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | // can not authenticate empty username |
| | | return null; |
| | | } |
| | | String usernameDecoded = decodeUsername(username); |
| | | String pw = new String(password); |
| | | if (StringUtils.isEmpty(pw)) { |
| | | // can not authenticate empty password |
| | |
| | | |
| | | // check to see if this is the federation user |
| | | if (canFederate()) { |
| | | if (username.equalsIgnoreCase(Constants.FEDERATION_USER)) { |
| | | if (usernameDecoded.equalsIgnoreCase(Constants.FEDERATION_USER)) { |
| | | List<String> tokens = getFederationTokens(); |
| | | if (tokens.contains(pw)) { |
| | | // the federation user is an administrator |
| | |
| | | if (userService == null) { |
| | | return null; |
| | | } |
| | | return userService.authenticate(username, password); |
| | | return userService.authenticate(usernameDecoded, password); |
| | | } |
| | | |
| | | /** |
| | |
| | | Principal principal = httpRequest.getUserPrincipal(); |
| | | if (principal != null) { |
| | | String username = principal.getName(); |
| | | if (StringUtils.isEmpty(username)) { |
| | | if (!StringUtils.isEmpty(username)) { |
| | | UserModel user = getUserModel(username); |
| | | if (user != null) { |
| | | // existing user |
| | | flagWicketSession(AuthenticationType.CONTAINER); |
| | | logger.debug(MessageFormat.format("{0} authenticated by servlet container principal from {1}", |
| | | user.username, httpRequest.getRemoteAddr())); |
| | | return user; |
| | | } else if (settings.getBoolean(Keys.realm.container.autoCreateAccounts, true)) { |
| | | // auto-create user from an authenticated container principal |
| | | user = new UserModel(username.toLowerCase()); |
| | | user.displayName = username; |
| | | user.password = Constants.EXTERNAL_ACCOUNT; |
| | | userService.updateUserModel(user); |
| | | flagWicketSession(AuthenticationType.CONTAINER); |
| | | logger.debug(MessageFormat.format("{0} authenticated and created by servlet container principal from {1}", |
| | | user.username, httpRequest.getRemoteAddr())); |
| | | return user; |
| | | } else { |
| | |
| | | if (userService == null) { |
| | | return; |
| | | } |
| | | if (userService.supportsCookies()) { |
| | | GitBlitWebSession session = GitBlitWebSession.get(); |
| | | boolean standardLogin = session.authenticationType.isStandard(); |
| | | |
| | | if (userService.supportsCookies() && standardLogin) { |
| | | Cookie userCookie; |
| | | if (user == null) { |
| | | // clear cookie for logout |
| | |
| | | } |
| | | |
| | | /** |
| | | * Encode the username for user in an url. |
| | | * |
| | | * @param name |
| | | * @return the encoded name |
| | | */ |
| | | protected String encodeUsername(String name) { |
| | | return name.replace("@", "%40").replace(" ", "%20").replace("\\", "%5C"); |
| | | } |
| | | |
| | | /** |
| | | * Decode a username from an encoded url. |
| | | * |
| | | * @param name |
| | | * @return the decoded name |
| | | */ |
| | | protected String decodeUsername(String name) { |
| | | return name.replace("%40", "@").replace("%20", " ").replace("%5C", "\\"); |
| | | } |
| | | |
| | | /** |
| | | * Returns the list of all users available to the login service. |
| | | * |
| | | * @see IUserService.getAllUsernames() |
| | |
| | | if (StringUtils.isEmpty(username)) { |
| | | return false; |
| | | } |
| | | return userService.deleteUser(username); |
| | | String usernameDecoded = decodeUsername(username); |
| | | return userService.deleteUser(usernameDecoded); |
| | | } |
| | | |
| | | /** |
| | |
| | | if (StringUtils.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | UserModel user = userService.getUserModel(username); |
| | | String usernameDecoded = decodeUsername(username); |
| | | UserModel user = userService.getUserModel(usernameDecoded); |
| | | return user; |
| | | } |
| | | |
| | |
| | | Constants.CONFIG_GITBLIT, null, "mailingList"))); |
| | | model.indexedBranches = new ArrayList<String>(Arrays.asList(config.getStringList( |
| | | Constants.CONFIG_GITBLIT, null, "indexBranch"))); |
| | | model.metricAuthorExclusions = new ArrayList<String>(Arrays.asList(config.getStringList( |
| | | Constants.CONFIG_GITBLIT, null, "metricAuthorExclusions"))); |
| | | |
| | | // Custom defined properties |
| | | model.customFields = new LinkedHashMap<String, String>(); |
| | |
| | | updateList(config, "postReceiveScript", repository.postReceiveScripts); |
| | | updateList(config, "mailingList", repository.mailingLists); |
| | | updateList(config, "indexBranch", repository.indexedBranches); |
| | | updateList(config, "metricAuthorExclusions", repository.metricAuthorExclusions); |
| | | |
| | | // User Defined Properties |
| | | if (repository.customFields != null) { |
| | |
| | | if (repository != null) { |
| | | for (String teamname : userService.getTeamnamesForRepositoryRole(repository.name)) { |
| | | TeamModel team = userService.getTeamModel(teamname); |
| | | scripts.addAll(team.preReceiveScripts); |
| | | if (!ArrayUtils.isEmpty(team.preReceiveScripts)) { |
| | | scripts.addAll(team.preReceiveScripts); |
| | | } |
| | | } |
| | | } |
| | | return new ArrayList<String>(scripts); |
| | |
| | | if (repository != null) { |
| | | for (String teamname : userService.getTeamnamesForRepositoryRole(repository.name)) { |
| | | TeamModel team = userService.getTeamModel(teamname); |
| | | scripts.addAll(team.postReceiveScripts); |
| | | if (!ArrayUtils.isEmpty(team.postReceiveScripts)) { |
| | | scripts.addAll(team.postReceiveScripts); |
| | | } |
| | | } |
| | | } |
| | | return new ArrayList<String>(scripts); |