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); }
/// <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); }
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); }