Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }