コード例 #1
0
ファイル: ImageViewTests.cs プロジェクト: trevorpower/tadmap
      public void Has_CanMarkOffensive_And_CanMarkUnoffensive()
      {
         ImageView view = new ImageView { CanMarkOffensive = true, CanUnmarkOffensive = true };

         Assert.IsTrue(view.CanMarkOffensive);
         Assert.IsTrue(view.CanUnmarkOffensive);
      }
コード例 #2
0
ファイル: ImageViewTests.cs プロジェクト: trevorpower/tadmap
      public void Has_OffensiveCount_And_ShowOffensiveCount()
      {
         ImageView view = new ImageView { OffensiveCount = 0, ShowOffensiveCount = true };

         Assert.AreEqual(0, view.OffensiveCount);
         Assert.AreEqual(true, view.ShowOffensiveCount);
      }
コード例 #3
0
ファイル: ImageViewTests.cs プロジェクト: trevorpower/tadmap
      public void Has_Title_Description_IsEditable_With_False_Value_IsPublic_And_PreviewUrl()
      {
         Guid id = Guid.NewGuid();

         ImageView view = new ImageView(id, "TitleF", "DescriptionF", "OriginalUrlF");

         Assert.AreEqual(id, view.Id);
         Assert.AreEqual("TitleF", view.Title);
         Assert.AreEqual("DescriptionF", view.Description);
         Assert.IsNotNull(view.IsEditable);
         Assert.IsNotNull(view.IsPublic);
         Assert.IsNull(view.PreviewUrl);
         Assert.AreEqual("OriginalUrlF", view.OriginalUrl);
      }
コード例 #4
0
ファイル: ImageController.cs プロジェクト: trevorpower/tadmap
      public ActionResult Index(Guid id, IPrincipal principal)
      {
         if (id == Guid.Empty)
            throw new ArgumentException("Cannot be empty(zeros)", "id");

         try
         {
            TadmapImage image = _imageRepository.GetAllImages().WithId(id).Single();

            ImageView model = new ImageView(image.Id, image.Title, image.Description, null);

            if (image.IsOffensive)
            {
               if (!principal.IsInRole(TadMapRoles.Administrator))
                  throw new SecurityException("Only administrator can view images marked as offensive");

               model.OffensiveCount = 1;
               model.ShowOffensiveCount = true;
               model.CanUnmarkOffensive = true;
            }
            else
            {
               model.OffensiveCount = 0;
               model.ShowOffensiveCount = principal.IsInRole(TadMapRoles.Administrator);
               model.CanMarkOffensive = principal.IsInRole(TadMapRoles.Administrator);
            }

            if (principal.Identity.Name == image.OwnerName) // owner
            {
               model.IsEditable = principal.Identity.Name == image.OwnerName;
               model.OriginalUrl = _binaryRepository.GetUrl(image.Key);
            }
            else if (principal.IsInRole(TadMapRoles.Administrator)) // administrator
            {
               model.OriginalUrl = _binaryRepository.GetUrl(image.Key);
            }
            else // guest
            {
               model.OriginalUrl = null;
            }

            model.PreviewUrl = _binaryRepository.GetUrl(image.ImageSet.Preview);

            model.IsPublic = image.IsPublic;

            if (principal.Identity.IsAuthenticated)
            {
               //UserOpenId openId = db.UserOpenIds.Single(i => i.OpenIdUrl == HttpContext.User.Identity.Name);

               //if (image.UserId == openId.UserId)
               //{
               //   // Owning user
               //   ViewData["CanEdit"] = true;
               //}
               //else
               //{
               //   // Other registered user
               //   if (image.Privacy == 0)
               //      if (!HttpContext.User.IsInRole(TadMapRoles.Administrator))
               //         throw new SecurityException("Only owner or administrator can view private image");
               //}
            }
            else if (!image.IsPublic)
            {
               throw new SecurityException("User must be authenticated to view a private image");
            }

            ViewData.Model = model;
         }
         catch (InvalidOperationException)
         {
            throw new ImageNotFoundException();
         }

         return View();
      }