Example #1
0
    private void Initialize()
    {
        ResourceType type = null;
        IEnumerable <NavigationProperty> propertyCollection = null;
        ResourcePermissions <Resource>   userPermissions    = null;
        bool isAdmin = false;
        bool isOwner = false;

        using (ResourceDataAccess dataAccess = new ResourceDataAccess())
        {
            if (IsEditMode)
            {
                AuthenticatedToken token = Session[Constants.AuthenticationTokenKey] as AuthenticatedToken;
                userPermissions = dataAccess.GetResourcePermissions(token, ResourceId);

                //Throw exception is user is not having atleast read permission on the resource.
                if (userPermissions == null || !userPermissions.Permissions.Contains(UserResourcePermissions.Read))
                {
                    throw new UnauthorizedAccessException(string.Format(CultureInfo.InvariantCulture,
                                                                        Resources.Resources.MsgUnAuthorizeAccess, UserResourcePermissions.Read));
                }
                isAdmin = dataAccess.IsAdmin(token);
                isOwner = dataAccess.IsOwner(token, userPermissions.Resource);

                type = dataAccess.GetResourceType(ResourceId);
                propertyCollection = dataAccess.GetNavigationProperties(Cache, ResourceId);
            }
            else
            {
                string resType = Convert.ToString(Request.QueryString[_resourceTypeKey]);
                if (!string.IsNullOrEmpty(resType))
                {
                    type = dataAccess.GetResourceType(resType);
                }
            }
        }
        if (type != null)
        {
            SelectedResourceType = type.Name;
        }


        UpdateControlsStatus(propertyCollection, userPermissions, isAdmin, isOwner);
    }
Example #2
0
        /// <summary>
        /// Get user permissions for the specified list of resources and their related resources.
        /// </summary>
        /// <param name="token">Authentication token.</param>
        /// <param name="resources">List or resources.</param>
        /// <returns>Mapping resource id and user permissions on the resource.</returns>
        private Dictionary <Guid, IEnumerable <string> > GetPermissions(AuthenticatedToken token, IList <Resource> resources)
        {
            Dictionary <Guid, IEnumerable <string> > userPermissions = null;

            if (resources != null && token != null && resources.Count > 0)
            {
                IList <Resource> srcResources = resources.ToList();
                foreach (Resource res in resources)
                {
                    //add file resources to source list
                    if (res.Files != null && res.Files.Count > 0)
                    {
                        srcResources = srcResources.Union(res.Files.Select(tuple => tuple as Resource).ToList()).ToList();
                    }

                    //add author resources to source list
                    ScholarlyWork scholWork = res as ScholarlyWork;
                    if (scholWork != null && scholWork.Authors != null && scholWork.Authors.Count > 0)
                    {
                        srcResources = srcResources.Union(scholWork.Authors.Select(tuple => tuple as Resource).ToList()).ToList();
                    }
                }

                using (ResourceDataAccess dataAccess = new ResourceDataAccess(this.CreateContext()))
                {
                    //Get user permission for all resources in the source list.
                    var permissons = dataAccess.GetResourcePermissions(token, srcResources);

                    if (permissons != null)
                    {
                        userPermissions = permissons.ToDictionary(tuple => tuple.Resource.Id, tuple => tuple.Permissions);
                    }
                }
            }

            //This is a default case which indicates that user is not having any permission.
            if (userPermissions == null)
            {
                userPermissions = new Dictionary <Guid, IEnumerable <string> >();
            }
            ;

            return(userPermissions);
        }
        private IEnumerable <ResourcePermissions <Resource> > GetRelatedResources(AuthenticatedToken token, Guid resourceId,
                                                                                  NavigationProperty navigationProperty)
        {
            IEnumerable <ResourcePermissions <Resource> > resPermissions = null;

            if (resourceId != Guid.Empty && navigationProperty != null)
            {
                using (ResourceDataAccess dataAccess = new ResourceDataAccess(this.CreateContext()))
                {
                    List <Resource> relatedResources = dataAccess.GetRelatedResources(resourceId, navigationProperty, null, UserResourcePermissions.Read);

                    if (relatedResources != null)
                    {
                        resPermissions = dataAccess.GetResourcePermissions(token, relatedResources);
                    }
                }
            }
            return(resPermissions);
        }
Example #4
0
        private IEnumerable <ResourcePermissions <File> > GetRelatedFiles(AuthenticatedToken token, Guid fileId,
                                                                          NavigationProperty navigationProperty)
        {
            IEnumerable <ResourcePermissions <File> > resPermissions = null;

            if (fileId != Guid.Empty && navigationProperty != null)
            {
                using (ResourceDataAccess dataAccess = new ResourceDataAccess(this.CreateContext()))
                {
                    var resources = dataAccess.GetRelatedResources(fileId, navigationProperty, null, UserResourcePermissions.Read);

                    if (resources != null)
                    {
                        List <File> relatedFiles = resources.Select(tuple => tuple as File).ToList();
                        resPermissions = dataAccess.GetResourcePermissions <File>(token, relatedFiles);
                    }
                }
            }
            return(resPermissions);
        }