SHaselbauer
2013-01-21 fb9813874c811ae06604c30d875e9dce57df9874
src/com/gitblit/models/UserModel.java
@@ -29,6 +29,7 @@
import com.gitblit.Constants.AccessPermission;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.AccountType;
import com.gitblit.Constants.AuthorizationControl;
import com.gitblit.Constants.PermissionType;
import com.gitblit.Constants.RegistrantType;
@@ -73,15 +74,22 @@
   // non-persisted fields
   public boolean isAuthenticated;
   public AccountType accountType;
   
   public UserModel(String username) {
      this.username = username;
      this.isAuthenticated = true;
      this.accountType = AccountType.LOCAL;
   }
   private UserModel() {
      this.username = "$anonymous";
      this.isAuthenticated = false;
      this.accountType = AccountType.LOCAL;
   }
   public boolean isLocalAccount() {
      return accountType.isLocal();
   }
   /**
@@ -100,8 +108,7 @@
   @Deprecated
   @Unused
   public boolean canAccessRepository(RepositoryModel repository) {
      boolean isOwner = !StringUtils.isEmpty(repository.owner)
            && repository.owner.equals(username);
      boolean isOwner = repository.isRepoAdministrator(username);
      boolean allowAuthenticated = isAuthenticated && AuthorizationControl.AUTHENTICATED.equals(repository.authorizationControl);
      return canAdmin() || isOwner || repositories.contains(repository.name.toLowerCase())
            || hasTeamAccess(repository.name) || allowAuthenticated;
@@ -296,7 +303,7 @@
      }
      
      // repository owner - either specified owner or personal repository
      if (repository.isOwner(username) || repository.isUsersPersonalRepository(username)) {
      if (repository.isRepoAdministrator(username) || repository.isUsersPersonalRepository(username)) {
         ap.permissionType = PermissionType.OWNER;
         ap.permission = AccessPermission.REWIND;
         return ap;
@@ -360,6 +367,12 @@
   public boolean canView(RepositoryModel repository) {
      return canAccess(repository, AccessRestrictionType.VIEW, AccessPermission.VIEW);
   }
   public boolean canView(RepositoryModel repository, String ref) {
      // Default UserModel doesn't implement ref-level security.
      // Other Realms (i.e. Gerrit) may override this method.
      return canView(repository);
   }
   public boolean canClone(RepositoryModel repository) {
      return canAccess(repository, AccessRestrictionType.CLONE, AccessPermission.CLONE);
@@ -398,7 +411,7 @@
         // can not fork your own repository
         return false;
      }
      if (canAdmin() || repository.isOwner(username)) {
      if (canAdmin() || repository.isRepoAdministrator(username)) {
         return true;
      }
      if (!repository.allowForks) {
@@ -415,7 +428,7 @@
   }
   
   public boolean canEdit(RepositoryModel model) {
      return canAdmin() || model.isUsersPersonalRepository(username) || model.isOwner(username);
      return canAdmin() || model.isUsersPersonalRepository(username) || model.isRepoAdministrator(username);
   }
   
   /**
@@ -587,9 +600,10 @@
      return nameVerified && emailVerified;
   }
   
   @Deprecated
   public boolean hasBranchPermission(String repositoryName, String branch) {
      // Default UserModel doesn't implement branch-level security. Other Realms (i.e. Gerrit) may override this method.
      return hasRepositoryPermission(repositoryName);
      return hasRepositoryPermission(repositoryName) || hasTeamRepositoryPermission(repositoryName);
   }
   
   public boolean isMyPersonalRepository(String repository) {