/// <summary> /// Get permissions setup for the path /// </summary> /// <param name="path"></param> /// <param name="parentPermissions"></param> /// <returns></returns> public DocumentPermissionModel GetDocumentPermissions(string path, DocumentPermissionModel parentPermissions = null) { var document = GetByPath(path); if (document != null && (document.ProtectedDocumentGroups.Any() || document.ProtectedDocumentCompanyTypes.Any() || document.ProtectedDocumentCompanies.Any())) { return(new DocumentPermissionModel(document)); } if (parentPermissions != null) { return(parentPermissions); } var parentSetupPermissions = Fetch(p => path.Contains(p.Path)).OrderByDescending(p => p.Path); foreach (var protectedDocument in parentSetupPermissions) { if (protectedDocument.ProtectedDocumentGroups.Any() || protectedDocument.ProtectedDocumentCompanyTypes.Any() || protectedDocument.ProtectedDocumentCompanies.Any()) { return(new DocumentPermissionModel(protectedDocument)); } } return(null); }
/// <summary> /// Check if current user can access folder or not /// </summary> /// <param name="path"></param> /// <param name="parentPermissions"></param> /// <returns></returns> public bool CanCurrentUserAccessPath(string path, DocumentPermissionModel parentPermissions = null) { if (WorkContext.CurrentUser != null) { if (WorkContext.CurrentUser.IsSystemAdministrator || WorkContext.CurrentUser.HasPermissions(Permission.ManageProtectedDocuments)) { return(true); } var documentPermissions = GetDocumentPermissions(path, parentPermissions); if (documentPermissions != null) { if (WorkContext.CurrentUser.GroupIds.Any(g => documentPermissions.GroupIds.Contains(g)) || WorkContext.CurrentUser.CompanyIds.Any(c => documentPermissions.CompanyIds.Contains(c)) || WorkContext.CurrentUser.CompanyTypeIds.Any(c => documentPermissions.CompanyTypeIds.Contains(c))) { return(true); } } } return(false); }