| | |
| | | this.userService.setup(settings);
|
| | | }
|
| | |
|
| | | public boolean supportsAddUser() {
|
| | | return supportsCredentialChanges(new UserModel(""));
|
| | | }
|
| | | |
| | | /**
|
| | | * Returns true if the user's credentials can be changed.
|
| | | *
|
| | | * @param user
|
| | | * @return true if the user service supports credential changes
|
| | | */
|
| | | public boolean supportsCredentialChanges() {
|
| | | return userService.supportsCredentialChanges();
|
| | | public boolean supportsCredentialChanges(UserModel user) {
|
| | | return (user != null && user.isLocalAccount()) || userService.supportsCredentialChanges();
|
| | | }
|
| | |
|
| | | /**
|
| | | * Returns true if the user's display name can be changed.
|
| | | *
|
| | | * @param user
|
| | | * @return true if the user service supports display name changes
|
| | | */
|
| | | public boolean supportsDisplayNameChanges() {
|
| | | return userService.supportsDisplayNameChanges();
|
| | | public boolean supportsDisplayNameChanges(UserModel user) {
|
| | | return (user != null && user.isLocalAccount()) || userService.supportsDisplayNameChanges();
|
| | | }
|
| | |
|
| | | /**
|
| | | * Returns true if the user's email address can be changed.
|
| | | *
|
| | | * @param user
|
| | | * @return true if the user service supports email address changes
|
| | | */
|
| | | public boolean supportsEmailAddressChanges() {
|
| | | return userService.supportsEmailAddressChanges();
|
| | | public boolean supportsEmailAddressChanges(UserModel user) {
|
| | | return (user != null && user.isLocalAccount()) || userService.supportsEmailAddressChanges();
|
| | | }
|
| | |
|
| | | /**
|
| | | * Returns true if the user's team memberships can be changed.
|
| | | *
|
| | | * @param user
|
| | | * @return true if the user service supports team membership changes
|
| | | */
|
| | | public boolean supportsTeamMembershipChanges() {
|
| | | return userService.supportsTeamMembershipChanges();
|
| | | public boolean supportsTeamMembershipChanges(UserModel user) {
|
| | | return (user != null && user.isLocalAccount()) || userService.supportsTeamMembershipChanges();
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | * @return the effective list of permissions for the user
|
| | | */
|
| | | public List<RegistrantAccessPermission> getUserAccessPermissions(UserModel user) {
|
| | | if (StringUtils.isEmpty(user.username)) {
|
| | | // new user
|
| | | return new ArrayList<RegistrantAccessPermission>();
|
| | | }
|
| | | Set<RegistrantAccessPermission> set = new LinkedHashSet<RegistrantAccessPermission>();
|
| | | set.addAll(user.getRepositoryPermissions());
|
| | | // Flag missing repositories
|
| | |
| | | for (RepositoryModel model : getRepositoryModels(user)) {
|
| | | if (model.isUsersPersonalRepository(username)) {
|
| | | // personal repository
|
| | | model.owner = user.username;
|
| | | model.addOwner(user.username);
|
| | | String oldRepositoryName = model.name;
|
| | | model.name = "~" + user.username + model.name.substring(model.projectPath.length());
|
| | | model.projectPath = "~" + user.username;
|
| | | updateRepositoryModel(oldRepositoryName, model, false);
|
| | | } else if (model.isOwner(username)) {
|
| | | // common/shared repo
|
| | | model.owner = user.username;
|
| | | model.addOwner(user.username);
|
| | | updateRepositoryModel(model.name, model, false);
|
| | | }
|
| | | }
|
| | |
| | | if (config.isOutdated()) {
|
| | | // reload model
|
| | | logger.info(MessageFormat.format("Config for \"{0}\" has changed. Reloading model and updating cache.", repositoryName));
|
| | | model = loadRepositoryModel(repositoryName);
|
| | | removeFromCachedRepositoryList(repositoryName);
|
| | | model = loadRepositoryModel(model.name);
|
| | | removeFromCachedRepositoryList(model.name);
|
| | | addToCachedRepositoryList(model);
|
| | | } else {
|
| | | // update a few repository parameters
|
| | |
| | |
|
| | | if (config != null) {
|
| | | model.description = getConfig(config, "description", "");
|
| | | model.owner = getConfig(config, "owner", "");
|
| | | model.addOwners(ArrayUtils.fromString(getConfig(config, "owner", "")));
|
| | | model.useTickets = getConfig(config, "useTickets", false);
|
| | | model.useDocs = getConfig(config, "useDocs", false);
|
| | | model.allowForks = getConfig(config, "allowForks", true);
|
| | |
| | | public void updateConfiguration(Repository r, RepositoryModel repository) {
|
| | | StoredConfig config = r.getConfig();
|
| | | config.setString(Constants.CONFIG_GITBLIT, null, "description", repository.description);
|
| | | config.setString(Constants.CONFIG_GITBLIT, null, "owner", repository.owner);
|
| | | config.setString(Constants.CONFIG_GITBLIT, null, "owner", ArrayUtils.toString(repository.owners));
|
| | | config.setBoolean(Constants.CONFIG_GITBLIT, null, "useTickets", repository.useTickets);
|
| | | config.setBoolean(Constants.CONFIG_GITBLIT, null, "useDocs", repository.useDocs);
|
| | | config.setBoolean(Constants.CONFIG_GITBLIT, null, "allowForks", repository.allowForks);
|
| | |
| | | // create a Gitblit repository model for the clone
|
| | | RepositoryModel cloneModel = repository.cloneAs(cloneName);
|
| | | // owner has REWIND/RW+ permissions
|
| | | cloneModel.owner = user.username;
|
| | | cloneModel.addOwner(user.username);
|
| | | updateRepositoryModel(cloneName, cloneModel, false);
|
| | |
|
| | | // add the owner of the source repository to the clone's access list
|
| | | if (!StringUtils.isEmpty(repository.owner)) {
|
| | | UserModel originOwner = getUserModel(repository.owner);
|
| | | if (originOwner != null) {
|
| | | originOwner.setRepositoryPermission(cloneName, AccessPermission.CLONE);
|
| | | updateUserModel(originOwner.username, originOwner, false);
|
| | | if (!ArrayUtils.isEmpty(repository.owners)) {
|
| | | for (String owner : repository.owners) {
|
| | | UserModel originOwner = getUserModel(owner);
|
| | | if (originOwner != null) {
|
| | | originOwner.setRepositoryPermission(cloneName, AccessPermission.CLONE);
|
| | | updateUserModel(originOwner.username, originOwner, false);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|