private dtoAttachmentPermission AttachmentGetPermissions(litePerson person, ProjectAttachment attachment, Project project, PmActivity activity) { dtoAttachmentPermission result = new dtoAttachmentPermission(); if (attachment != null && project != null) { lm.Comol.Core.FileRepository.Domain.ModuleRepository repositoryPermissions = GetRepositoryPermissions((project.isPortal) ? 0 : (project.Community == null) ? -1 : project.Community.Id, person.Id); ModuleProjectManagement mPermission = (project.isPortal) ? ModuleProjectManagement.CreatePortalmodule((person == null) ? (Int32)UserTypeStandard.Guest : person.TypeID) : new ModuleProjectManagement(Manager.GetModulePermission(person.Id, (!project.isPortal && project.Community != null) ? project.Community.Id : 0, GetIdModule())); ProjectResource resource = project.Resources.Where(r => r.Deleted == BaseStatusDeleted.None && r.Type == ResourceType.Internal && r.Person == person).FirstOrDefault(); PmActivityPermission rolePermissions = GetRolePermissions(AttachmentGetContainerRole(project, activity, resource, mPermission)); switch (attachment.Type) { case AttachmentType.file: result.Download = (attachment.Item != null && attachment.Item.IsDownloadable || attachment.Item.Type == ItemType.Link) && (HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments)); result.Play = (attachment.Item != null && (attachment.Item.Type == ItemType.Multimedia || attachment.Item.Type == ItemType.ScormPackage || attachment.Item.Type == ItemType.VideoStreaming)) && (HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments)); switch (attachment.Item.Type) { case ItemType.ScormPackage: case ItemType.Multimedia: result.ViewMyStatistics = HasPermission(rolePermissions, PmActivityPermission.ViewAttachments); if (attachment.Item.IsInternal || (repositoryPermissions.Administration || (repositoryPermissions.EditOthersFiles || (repositoryPermissions.EditMyFiles && attachment.Item.IdOwner == person.Id)))) { result.ViewOtherStatistics = HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id); result.SetMetadata = result.ViewOtherStatistics; } break; case ItemType.Link: result.Play = result.Download; break; } result.Edit = false; break; case AttachmentType.url: result.Download = HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments); result.Play = result.Download; result.Edit = HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id); break; } result.Delete = false; result.UnDelete = (attachment.Deleted != BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualUnDeleteAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); result.Unlink = (attachment.SharedItems.Any() && activity != null && attachment.SharedItems.Where(s => s.Deleted == BaseStatusDeleted.None && s.Activity != null && s.Activity.Id == activity.Id && s.Type == AttachmentLinkType.Shared).Any() && attachment.Deleted == BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualDeleteAttachments) || HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); result.VirtualDelete = (attachment.Deleted == BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualDeleteAttachments) || HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); } return(result); }
public static ModuleRepository CreateForSelf() { ModuleRepository module = new ModuleRepository(); module.UploadFile = true; module.EditMyFiles = true; module.DeleteMyFiles = true; module.Administration = true; module.ViewMyStatistics = true; module.ViewItemsList = true; module.DownloadOrPlay = true; module.EditOthersFiles = true; module.ViewStatistics = true; module.ManageModulePermission = true; module.ManageItems = true; return(module); }
public static ModuleRepository CreatePortalmodule(int idProfileType) { Boolean admin = (idProfileType == (int)UserTypeStandard.SysAdmin || idProfileType == (int)UserTypeStandard.Administrator); Boolean baseAdmin = (admin || idProfileType == (int)UserTypeStandard.Administrative); Boolean isGenericUser = (idProfileType == (int)UserTypeStandard.Guest || idProfileType == (int)UserTypeStandard.PublicUser); ModuleRepository module = new ModuleRepository(); module.UploadFile = baseAdmin; module.EditMyFiles = baseAdmin; module.DeleteMyFiles = baseAdmin; module.Administration = admin; module.ViewMyStatistics = !isGenericUser; module.ViewItemsList = !isGenericUser; module.DownloadOrPlay = !isGenericUser;; module.EditOthersFiles = admin; module.ViewStatistics = admin; module.ManageModulePermission = (idProfileType == (int)UserTypeStandard.SysAdmin || idProfileType == (int)UserTypeStandard.Administrator); module.ManageItems = admin; return(module); }
public dtoDisplayRepositoryItem(dtoRepositoryItem item, Int32 idPerson, liteRepositorySettings settings, ModuleRepository modulePermissions, Boolean forAdmin = false, Boolean hasAssignments = false) : base(item) { IsUserAvailable = forAdmin || hasAssignments; Children = new List <dtoDisplayRepositoryItem>(); Permissions = CreatePermission(item, idPerson, settings, modulePermissions, forAdmin); Identifier = new dtoItemIdentifier(); }
private ItemPermission CreatePermission(dtoRepositoryItem item, Int32 idPerson, liteRepositorySettings settings, ModuleRepository modulePermissions, Boolean forAdmin = false) { ItemPermission permissions = new ItemPermission(); Boolean isOwner = (item.IdOwner == idPerson); Boolean manageOthers = (modulePermissions.Administration || modulePermissions.ManageItems || modulePermissions.EditOthersFiles); if (IsUserAvailable) { IsUserAvailable = manageOthers || (((isOwner && item.IsVisible) || item.IsVisible) && (item.Status == ItemStatus.Active || isOwner)); } item.AllowUpload = (!item.IsFile && item.FolderType == Domain.FolderType.standard && (item.AllowUpload || modulePermissions.Administration || modulePermissions.ManageItems || isOwner)); permissions.AllowUpload = item.AllowUpload; switch (item.Type) { case ItemType.File: permissions.Unzip = (item.Availability == ItemAvailability.available) && ((item.Extension == ".zip") && (manageOthers || (modulePermissions.EditMyFiles && isOwner) || (modulePermissions.UploadFile && isOwner))); permissions.Zip = (item.Availability == ItemAvailability.available) && (manageOthers || modulePermissions.DownloadOrPlay || (modulePermissions.EditMyFiles && isOwner) || (modulePermissions.UploadFile && isOwner)); break; case ItemType.Folder: break; case ItemType.Multimedia: case ItemType.ScormPackage: permissions.CanEditSettings = ((item.Deleted == DomainModel.BaseStatusDeleted.None && manageOthers || (modulePermissions.EditMyFiles && isOwner) || (modulePermissions.UploadFile && isOwner && item.Availability == ItemAvailability.available))); permissions.EditSettings = IsAvailableByType(item.Type, item.Availability) && ((item.Deleted == DomainModel.BaseStatusDeleted.None && manageOthers || (modulePermissions.EditMyFiles && isOwner) || (modulePermissions.UploadFile && isOwner && item.Availability == ItemAvailability.available))); permissions.Zip = (item.Availability != ItemAvailability.notavailable) && (manageOthers || modulePermissions.DownloadOrPlay || (modulePermissions.EditMyFiles && isOwner) || (modulePermissions.UploadFile && isOwner)); break; case ItemType.Link: break; } permissions.Edit = manageOthers || (modulePermissions.EditMyFiles && isOwner) || (modulePermissions.UploadFile && isOwner); permissions.ViewMyStatistics = ((item.Deleted == DomainModel.BaseStatusDeleted.None && item.Type != ItemType.Link && item.Type != ItemType.Folder && item.Type != ItemType.File) && !(manageOthers || (modulePermissions.EditMyFiles && isOwner && IsAvailableByType(item.Type, item.Availability)) || (modulePermissions.UploadFile && isOwner && IsAvailableByType(item.Type, item.Availability)))); permissions.ViewOtherStatistics = (item.Deleted == DomainModel.BaseStatusDeleted.None && item.Type != ItemType.Link && item.Type != ItemType.Folder && item.Type != ItemType.File) && (manageOthers || (modulePermissions.EditMyFiles && isOwner && IsAvailableByType(item.Type, item.Availability)) || (modulePermissions.UploadFile && isOwner && IsAvailableByType(item.Type, item.Availability))); permissions.VersioningAvailable = (item.Availability != ItemAvailability.notavailable) && ((item.Deleted == DomainModel.BaseStatusDeleted.None && item.Type != ItemType.Folder && item.Type != ItemType.Link && settings.AllowVersioning)); permissions.ViewPermission = permissions.Edit; permissions.EditPermission = manageOthers || (modulePermissions.EditMyFiles && isOwner) || (modulePermissions.UploadFile && isOwner && item.Availability != ItemAvailability.available); permissions.Delete = (item.Deleted != DomainModel.BaseStatusDeleted.None && (manageOthers || (modulePermissions.DeleteMyFiles && isOwner))); permissions.UnDelete = (item.Deleted != DomainModel.BaseStatusDeleted.None && (manageOthers || (modulePermissions.DeleteMyFiles && isOwner))); permissions.VirtualDelete = (item.Deleted == DomainModel.BaseStatusDeleted.None && (manageOthers || (modulePermissions.DeleteMyFiles && isOwner))); permissions.Download = (item.Availability != ItemAvailability.notavailable) && (manageOthers || (item.IsDownloadable && item.Type != ItemType.Folder && permissions.Download)); permissions.Play = IsAvailableByType(item.Type, item.Availability) && (item.Type == ItemType.Multimedia || item.Type == ItemType.ScormPackage) && ((manageOthers || permissions.Download) && item.Type != ItemType.Folder); permissions.Preview = IsAvailableByType(item.Type, item.Availability) && (item.DisplayMode == Domain.DisplayMode.inModal || item.DisplayMode == Domain.DisplayMode.downloadOrPlayOrModal); permissions.AllowSelection = (item.Availability != ItemAvailability.notavailable && (isOwner || manageOthers || item.IsDownloadable || item.Type == ItemType.Link || item.Type == ItemType.Folder)); permissions.Hide = (item.Deleted == DomainModel.BaseStatusDeleted.None && permissions.Edit && item.IsVisible); permissions.Show = (item.Deleted == DomainModel.BaseStatusDeleted.None && permissions.Edit && !item.IsVisible); return(permissions); }