Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/20/17 11:27:33 (7 years ago)
Author:
jzenisek
Message:

#2839 worked on permission checks in listing methods

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveProjectManagement/HeuristicLab.Services.Hive/3.3/HiveService.cs

    r15547 r15552  
    6969
    7070    #region Task Methods
     71    [Obsolete]
    7172    public Guid AddTask(DT.Task task, DT.TaskData taskData, IEnumerable<Guid> resourceIds) {
    7273      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
     
    353354      var pm = PersistenceManager;
    354355      using (new PerformanceLogger("GetJobs")) {
     356        // TODO-JAN: optimization potential - avoid using too many joins in linq
    355357        var jobDao = pm.JobDao;
    356358        var jobPermissionDao = pm.JobPermissionDao;
     
    364366            .Select(x => x.ToDto())
    365367            .ToList();
     368          // calculate stats only for owned & permitted jobs; TODO: query only needed ones, not all
    366369          var statistics = taskDao.GetAll()
     370              .Where(x => jobs.Select(y => y.Id).Contains(x.JobId))
    367371              .GroupBy(x => x.JobId)
    368372              .Select(x => new {
     
    393397    }
    394398
     399    [Obsolete]
    395400    public Guid AddJob(DT.Job jobDto) {
    396401      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
     
    515520        var jobDao = pm.JobDao;
    516521        pm.UseTransaction(() => {
    517           // child task will be deleted by db-trigger
     522          // child tasks will be deleted by db-trigger
     523          // entries in AssignedJobResource will be deleted by foreign key clause CASCADE ON DELETE
    518524          jobDao.Delete(jobId);
    519525          pm.SubmitChanges();
     
    728734    public void DeleteProject(Guid projectId) {
    729735      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator);
    730       AuthorizationManager.AuthorizeForProjectAdministration(projectId);
    731736      var pm = PersistenceManager;
    732737      using (new PerformanceLogger("DeleteProject")) {
    733738        var projectDao = pm.ProjectDao;
    734         pm.UseTransaction(() => {
     739        var assignedJobResourceDao = pm.AssignedJobResourceDao;
     740        pm.UseTransaction(() => {
     741          assignedJobResourceDao.DeleteByProjectId(projectId);
    735742          projectDao.Delete(projectId);
    736743          pm.SubmitChanges();
     
    748755    }
    749756
     757    // query granted projects for use (i.e. to calculate on)
    750758    public IEnumerable<DT.Project> GetProjects() {
    751759      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
     
    757765        var currentUserId = UserManager.CurrentUserId;
    758766        return pm.UseTransaction(() => {
    759           var projectPermissions = projectPermissionDao.GetAll();
    760           return projectDao.GetAll().ToList()
    761             .Where(x => isAdministrator
    762               || x.OwnerUserId == currentUserId
    763               || UserManager.VerifyUser(currentUserId, projectPermissions
    764                   .Where(y => y.ProjectId == x.ProjectId)
    765                   .Select(z => z.GrantedUserId)
    766                   .ToList())
    767               )
    768             .Select(x => x.ToDto())
    769             .ToList();
     767          var userAndGroupIds = new List<Guid> { currentUserId };
     768          userAndGroupIds.AddRange(UserManager.GetUserGroupIdsOfUser(currentUserId));
     769          return projectDao.GetGrantedProjectsForUser(userAndGroupIds)
     770            .Select(x => x.ToDto());
     771          //var projectPermissions = projectPermissionDao.GetAll();
     772          //return projectDao.GetAll().ToList()
     773          //  .Where(x => isAdministrator
     774          //    || x.OwnerUserId == currentUserId
     775          //    || UserManager.VerifyUser(currentUserId, projectPermissions
     776          //        .Where(y => y.ProjectId == x.ProjectId)
     777          //        .Select(z => z.GrantedUserId)
     778          //        .ToList())
     779          //    )
     780          //  .Select(x => x.ToDto())
     781          //  .ToList();
    770782        });
    771783      }
     
    816828        var projectPermissionDao = pm.ProjectPermissionDao;
    817829        var projectDao = pm.ProjectDao;
     830        var assignedJobResourceDao = pm.AssignedJobResourceDao;
    818831        pm.UseTransaction(() => {
    819832          if (cascading) {
    820833            var childProjectIds = projectDao.GetChildProjectIdsById(projectId);
    821834            projectPermissionDao.DeleteByProjectIdsAndGrantedUserIds(childProjectIds, grantedUserIds);
     835            assignedJobResourceDao.DeleteByProjectIdsAndUserIds(childProjectIds, grantedUserIds);
    822836          }
    823837          projectPermissionDao.DeleteByProjectIdAndGrantedUserIds(projectId, grantedUserIds);
     838          assignedJobResourceDao.DeleteByProjectIdAndUserIds(projectId, grantedUserIds);
    824839          pm.SubmitChanges();
    825840        });
     
    829844    public IEnumerable<DT.ProjectPermission> GetProjectPermissions(Guid projectId) {
    830845      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
     846      AuthorizationManager.AuthorizeForProjectAdministration(projectId);
    831847      var pm = PersistenceManager;
    832848      using (new PerformanceLogger("GetProjectPermissions")) {
     
    880896      using (new PerformanceLogger("UnassignProjectResources")) {
    881897        var assignedProjectResourceDao = pm.AssignedProjectResourceDao;
     898        var assignedJobResourceDao = pm.AssignedJobResourceDao;
    882899        var projectDao = pm.ProjectDao;
    883900        pm.UseTransaction(() => {
     
    885902            var childProjectIds = projectDao.GetChildProjectIdsById(projectId);
    886903            assignedProjectResourceDao.DeleteByProjectIdsAndResourceIds(childProjectIds, resourceIds);
     904            assignedJobResourceDao.DeleteByProjectIdsAndResourceIds(childProjectIds, resourceIds);
    887905          }
    888906          assignedProjectResourceDao.DeleteByProjectIdAndResourceIds(projectId, resourceIds);
    889           pm.SubmitChanges();
    890         });
    891       }
    892     }
    893 
    894     public IEnumerable<AssignedProjectResource> GetAssignedResourcesForProject(Guid projectId) {
     907          assignedJobResourceDao.DeleteByProjectIdAndResourceIds(projectId, resourceIds);
     908          pm.SubmitChanges();
     909        });
     910      }
     911    }
     912
     913    public IEnumerable<DT.AssignedProjectResource> GetAssignedResourcesForProject(Guid projectId) {
    895914      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
    896915      var pm = PersistenceManager;
     
    903922      }
    904923    }
     924
    905925    #endregion
    906926
Note: See TracChangeset for help on using the changeset viewer.