- Timestamp:
- 01/26/18 08:51:30 (7 years ago)
- Location:
- branches/HiveProjectManagement/HeuristicLab.Services.Hive/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveProjectManagement/HeuristicLab.Services.Hive/3.3/HiveService.cs
r15644 r15658 1129 1129 public IEnumerable<DT.Slave> GetSlaves() { 1130 1130 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 1131 bool isAdministrator = RoleVerifier.IsInRole(HiveRoles.Administrator);1132 1131 var pm = PersistenceManager; 1133 1132 using (new PerformanceLogger("GetSlaves")) { 1134 1133 var slaveDao = pm.SlaveDao; 1135 //var projectPermissionDao = pm.ProjectPermissionDao; 1134 var projectDao = pm.ProjectDao; 1135 var assignedProjectResourceDao = pm.AssignedProjectResourceDao; 1136 1137 // collect user information 1136 1138 var currentUserId = UserManager.CurrentUserId; 1137 return pm.UseTransaction(() => { 1138 return slaveDao.GetAll().ToList() 1139 .Where( x => isAdministrator 1140 || x.OwnerUserId == null 1141 || x.OwnerUserId == currentUserId) 1139 var userAndGroupIds = new List<Guid> { currentUserId }; 1140 userAndGroupIds.AddRange(UserManager.GetUserGroupIdsOfUser(currentUserId)); 1141 1142 return pm.UseTransaction(() => { 1143 var slaves = slaveDao.GetAll() 1144 .Select(x => x.ToDto()) 1145 .ToList(); 1146 var grantedProjectIds = projectDao.GetUsageGrantedProjectsForUser(userAndGroupIds) 1147 .Select(x => x.ProjectId) 1148 .ToList(); 1149 var grantedResourceIds = assignedProjectResourceDao.GetAllGrantedResourcesByProjectIds(grantedProjectIds) 1150 .Select(x => x.ResourceId) 1151 .ToList(); 1152 1153 return slaves 1154 .Where(x => grantedResourceIds.Contains(x.Id)) 1155 .ToList(); 1156 }); 1157 } 1158 } 1159 1160 public IEnumerable<DT.SlaveGroup> GetSlaveGroups() { 1161 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 1162 var pm = PersistenceManager; 1163 using (new PerformanceLogger("GetSlaveGroups")) { 1164 var slaveGroupDao = pm.SlaveGroupDao; 1165 var projectDao = pm.ProjectDao; 1166 var assignedProjectResourceDao = pm.AssignedProjectResourceDao; 1167 1168 // collect user information 1169 var currentUserId = UserManager.CurrentUserId; 1170 var userAndGroupIds = new List<Guid> { currentUserId }; 1171 userAndGroupIds.AddRange(UserManager.GetUserGroupIdsOfUser(currentUserId)); 1172 1173 return pm.UseTransaction(() => { 1174 var slaveGroups = slaveGroupDao.GetAll() 1175 .Select(x => x.ToDto()) 1176 .ToList(); 1177 var grantedProjectIds = projectDao.GetUsageGrantedProjectsForUser(userAndGroupIds) 1178 .Select(x => x.ProjectId) 1179 .ToList(); 1180 var grantedResourceIds = assignedProjectResourceDao.GetAllGrantedResourcesByProjectIds(grantedProjectIds) 1181 .Select(x => x.ResourceId) 1182 .ToList(); 1183 1184 return slaveGroups 1185 .Where(x => grantedResourceIds.Contains(x.Id)) 1186 .ToList(); 1187 }); 1188 } 1189 } 1190 1191 public IEnumerable<DT.Slave> GetSlavesForAdministration() { 1192 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 1193 bool isAdministrator = RoleVerifier.IsInRole(HiveRoles.Administrator); 1194 var pm = PersistenceManager; 1195 using (new PerformanceLogger("GetSlavesForAdministration")) { 1196 var slaveDao = pm.SlaveDao; 1197 var currentUserId = UserManager.CurrentUserId; 1198 1199 if (isAdministrator) { 1200 return pm.UseTransaction(() => { 1201 return slaveDao.GetAll() 1142 1202 .Select(x => x.ToDto()) 1143 1203 .ToList(); 1144 //var projectPermissions = projectPermissionDao.GetAll(); 1145 //return slaveDao.GetAll().ToList() 1146 // .Where(x => isAdministrator 1147 // || x.OwnerUserId == null 1148 // || x.OwnerUserId == currentUserId 1149 // || UserManager.VerifyUser(currentUserId, projectPermissions 1150 // //.Where(y => y.ResourceId == x.ResourceId) 1151 // .Select(z => z.GrantedUserId) 1152 // .ToList()) 1153 // ) 1154 // .Select(x => x.ToDto()) 1155 // .ToList(); 1156 }); 1157 } 1158 } 1159 1160 public IEnumerable<DT.SlaveGroup> GetSlaveGroups() { 1204 }); 1205 } else { 1206 var slaves = slaveDao.GetAll() 1207 .Select(x => x.ToDto()) 1208 .ToList(); 1209 var projectDao = pm.ProjectDao; 1210 var assignedProjectResourceDao = pm.AssignedProjectResourceDao; 1211 var projects = projectDao.GetAdministrationGrantedProjectsForUser(currentUserId).ToList(); 1212 var resourceIds = assignedProjectResourceDao 1213 .GetAllGrantedResourcesByProjectIds(projects.Select(x => x.ProjectId).ToList()) 1214 .Select(x => x.ResourceId) 1215 .ToList(); 1216 1217 return slaves 1218 .Where(x => resourceIds.Contains(x.Id)) 1219 .ToList(); 1220 } 1221 } 1222 } 1223 1224 public IEnumerable<DT.SlaveGroup> GetSlaveGroupsForAdministration() { 1161 1225 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 1162 1226 bool isAdministrator = RoleVerifier.IsInRole(HiveRoles.Administrator); 1163 1227 var pm = PersistenceManager; 1164 using (new PerformanceLogger("GetSlaveGroups ")) {1228 using (new PerformanceLogger("GetSlaveGroupsForAdministration")) { 1165 1229 var slaveGroupDao = pm.SlaveGroupDao; 1166 var projectPermissionDao = pm.ProjectPermissionDao;1167 1230 var currentUserId = UserManager.CurrentUserId; 1168 return pm.UseTransaction(() => { 1169 //var projectPermissions = projectPermissionDao.GetAll(); 1170 return slaveGroupDao.GetAll().ToList() 1171 .Where(x => isAdministrator 1172 || x.OwnerUserId == null 1173 || x.OwnerUserId == currentUserId 1174 //|| UserManager.VerifyUser(currentUserId, projectPermissions 1175 // //.Where(y => y.ResourceId == x.ResourceId) 1176 // .Select(z => z.GrantedUserId) 1177 // .ToList()) 1178 ) 1231 1232 if (isAdministrator) { 1233 return pm.UseTransaction(() => { 1234 return slaveGroupDao.GetAll() 1235 .Select(x => x.ToDto()) 1236 .ToList(); 1237 }); 1238 } else { 1239 var slaveGroups = slaveGroupDao.GetAll() 1179 1240 .Select(x => x.ToDto()) 1180 1241 .ToList(); 1181 }); 1242 var projectDao = pm.ProjectDao; 1243 var assignedProjectResourceDao = pm.AssignedProjectResourceDao; 1244 var projects = projectDao.GetAdministrationGrantedProjectsForUser(currentUserId).ToList(); 1245 var resourceIds = assignedProjectResourceDao 1246 .GetAllGrantedResourcesByProjectIds(projects.Select(x => x.ProjectId).ToList()) 1247 .Select(x => x.ResourceId) 1248 .ToList(); 1249 1250 return slaveGroups 1251 .Where(x => resourceIds.Contains(x.Id)) 1252 .ToList(); 1253 } 1182 1254 } 1183 1255 } … … 1185 1257 public void UpdateSlave(DT.Slave slaveDto) { 1186 1258 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 1259 AuthorizationManager.AuthorizeForResourceAdministration(slaveDto.Id); 1187 1260 var pm = PersistenceManager; 1188 1261 using (new PerformanceLogger("UpdateSlave")) { … … 1202 1275 public void UpdateSlaveGroup(DT.SlaveGroup slaveGroupDto) { 1203 1276 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 1277 AuthorizationManager.AuthorizeForResourceAdministration(slaveGroupDto.Id); 1204 1278 var pm = PersistenceManager; 1205 1279 using (new PerformanceLogger("UpdateSlaveGroup")) { … … 1405 1479 1406 1480 return userGroupTree; 1481 } 1482 1483 public bool CheckAccessToAdminAreaGranted() { 1484 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 1485 bool isAdministrator = RoleVerifier.IsInRole(HiveRoles.Administrator); 1486 var pm = PersistenceManager; 1487 using(new PerformanceLogger("CheckAccessToAdminAreaGranted")) { 1488 if (isAdministrator) { 1489 return true; 1490 } else { 1491 var projectDao = pm.ProjectDao; 1492 var currentUserId = UserManager.CurrentUserId; 1493 return projectDao.GetAdministrationGrantedProjectsForUser(currentUserId).Any(); 1494 } 1495 } 1407 1496 } 1408 1497 #endregion -
branches/HiveProjectManagement/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs
r15644 r15658 210 210 211 211 [OperationContract] 212 IEnumerable<Slave> GetSlavesForAdministration(); 213 214 [OperationContract] 215 IEnumerable<SlaveGroup> GetSlaveGroupsForAdministration(); 216 217 [OperationContract] 212 218 void UpdateSlave(Slave slave); 213 219 … … 260 266 [OperationContract] 261 267 Dictionary<Guid, HashSet<Guid>> GetUserGroupTree(); 268 269 [OperationContract] 270 bool CheckAccessToAdminAreaGranted(); 262 271 #endregion 263 272
Note: See TracChangeset
for help on using the changeset viewer.