Beispiel #1
0
    private ICollection <ScholarlyWork> FilterResourcesBasedOnPermissions(AuthenticatedToken token, string userPermission,
                                                                          ICollection <ScholarlyWork> resourceList)
    {
        List <ScholarlyWork> filteredResources = new List <ScholarlyWork>();

        if (token != null && resourceList != null && resourceList.Count > 0)
        {
            using (ResourceDataAccess dataAccess = new ResourceDataAccess())
            {
                if (UserResourcePermissions.Create.Equals(userPermission))
                {
                    if (dataAccess.HasCreatePermission(token))
                    {
                        foreach (ScholarlyWork scholWork in resourceList)
                        {
                            bool isAuthorized = true;
                            foreach (Contact contact in scholWork.Authors.Union(scholWork.Editors))
                            {
                                Contact cFound = dataAccess.GetResources <Contact>(ResourceStringComparison.Equals, contact.Title).FirstOrDefault();
                                if (cFound != null && !dataAccess.AuthorizeUser(token, userPermission, cFound.Id))
                                {
                                    isAuthorized = false;
                                    break;
                                }
                            }
                            if (isAuthorized)
                            {
                                filteredResources.Add(scholWork);
                            }
                        }
                    }
                }
                else
                {
                    foreach (ScholarlyWork scholWork in resourceList)
                    {
                        if (dataAccess.AuthorizeUser(token, userPermission, scholWork.Id))
                        {
                            filteredResources.Add(scholWork);
                        }
                    }
                }
            }
        }
        return(filteredResources);
    }