public virtual async Task <ActionResult> ReportAbuse(string id, string version, ReportAbuseViewModel reportForm) { // Html Encode the message reportForm.Message = System.Web.HttpUtility.HtmlEncode(reportForm.Message); if (!ModelState.IsValid) { return(ReportAbuse(id, version)); } var package = _packageService.FindPackageByIdAndVersion(id, version); if (package == null) { return(HttpNotFound()); } User user = null; MailAddress from; if (Request.IsAuthenticated) { user = GetCurrentUser(); from = user.ToMailAddress(); } else { from = new MailAddress(reportForm.Email); } var request = new ReportPackageRequest { AlreadyContactedOwners = reportForm.AlreadyContactedOwner, FromAddress = from, Message = reportForm.Message, Package = package, Reason = EnumHelper.GetDescription(reportForm.Reason.Value), RequestingUser = user, Url = Url, CopySender = reportForm.CopySender, Signature = reportForm.Signature }; var subject = $"Support Request for '{package.PackageRegistration.Id}' version {package.Version}"; var requestorEmailAddress = user != null ? user.EmailAddress : reportForm.Email; var reason = EnumHelper.GetDescription(reportForm.Reason.Value); await _supportRequestService.AddNewSupportRequestAsync(subject, reportForm.Message, requestorEmailAddress, reason, user, package); _messageService.ReportAbuse(request); TempData["Message"] = "Your abuse report has been sent to the gallery operators."; return(Redirect(Url.Package(id, version))); }
public void ReportAbuse(ReportPackageRequest request) { string subject = "[{GalleryOwnerName}] Support Request for '{Id}' version {Version} (Reason: {Reason})"; subject = request.FillIn(subject, Config); const string bodyTemplate = @" **Email:** {Name} ({Address}) **Signature:** {Signature} **Package:** {Id} {PackageUrl} **Version:** {Version} {VersionUrl} {User} **Reason:** {Reason} **Has the package owner been contacted?:** {AlreadyContactedOwners} **Message:** {Message} "; var body = new StringBuilder(); body.Append(request.FillIn(bodyTemplate, Config)); body.AppendFormat(CultureInfo.InvariantCulture, @" *Message sent from {0}*", Config.GalleryOwner.DisplayName); using (var mailMessage = new MailMessage()) { mailMessage.Subject = subject; mailMessage.Body = body.ToString(); mailMessage.From = Config.GalleryOwner; mailMessage.ReplyToList.Add(request.FromAddress); mailMessage.To.Add(Config.GalleryOwner); if (request.CopySender) { // Normally we use a second email to copy the sender to avoid disclosing the receiver's address // but here, the receiver is the gallery operators who already disclose their address // CCing helps to create a thread of email that can be augmented by the sending user mailMessage.CC.Add(request.FromAddress); } SendMessage(mailMessage); } }
public virtual ActionResult ReportAbuse(string id, string version, ReportAbuseViewModel reportForm) { // Html Encode the message reportForm.Message = System.Web.HttpUtility.HtmlEncode(reportForm.Message); if (!ModelState.IsValid) { return(ReportAbuse(id, version)); } var package = _packageService.FindPackageByIdAndVersion(id, version); if (package == null) { return(HttpNotFound()); } User user = null; MailAddress from; if (Request.IsAuthenticated) { user = GetCurrentUser(); from = user.ToMailAddress(); } else { from = new MailAddress(reportForm.Email); } var request = new ReportPackageRequest { AlreadyContactedOwners = reportForm.AlreadyContactedOwner, FromAddress = from, Message = reportForm.Message, Package = package, Reason = EnumHelper.GetDescription(reportForm.Reason.Value), RequestingUser = user, Url = Url, CopySender = reportForm.CopySender }; _messageService.ReportAbuse(request ); TempData["Message"] = "Your abuse report has been sent to the gallery operators."; return(Redirect(Url.Package(id, version))); }
public void ReportAbuse(ReportPackageRequest request) { string subject = "[{GalleryOwnerName}] Support Request for '{Id}' version {Version} (Reason: {Reason})"; subject = request.FillIn(subject, _config); const string bodyTemplate = @" **Email:** {Name} ({Address}) **Package:** {Id} {PackageUrl} **Version:** {Version} {VersionUrl} **Owners:** {OwnerList} **User:** {Username} ({UserAddress}) {UserUrl} **Reason:** {Reason} **Has the package owner been contacted?:** {AlreadyContactedOwners} **Message:** {Message} "; var body = new StringBuilder(""); body.Append(request.FillIn(bodyTemplate, _config)); body.AppendFormat(CultureInfo.InvariantCulture, @" *Message sent from {0}*", _config.GalleryOwnerName); using (var mailMessage = new MailMessage()) { mailMessage.Subject = subject; mailMessage.Body = body.ToString(); mailMessage.From = new MailAddress(_config.GalleryOwnerEmail, _config.GalleryOwnerName); mailMessage.ReplyToList.Add(request.FromAddress); mailMessage.To.Add(_config.GalleryOwnerEmail); SendMessage(mailMessage); } }
public virtual ActionResult ReportAbuse(string id, string version, ReportAbuseViewModel reportForm) { if (!ModelState.IsValid) { return(ReportAbuse(id, version)); } var package = _packageService.FindPackageByIdAndVersion(id, version); if (package == null) { return(HttpNotFound()); } User user = null; MailAddress from; if (Request.IsAuthenticated) { user = _userService.FindByUsername(HttpContext.User.Identity.Name); from = user.ToMailAddress(); } else { from = new MailAddress(reportForm.Email); } var request = new ReportPackageRequest { AlreadyContactedOwners = reportForm.AlreadyContactedOwner, FromAddress = from, Message = reportForm.Message, Package = package, Reason = reportForm.Reason, RequestingUser = user, Url = Url }; _messageService.ReportAbuse(request ); TempData["Message"] = "Your abuse report has been sent to the gallery operators."; return(Redirect(Url.Package(id, version))); }
public void WillCopySenderIfAsked() { var from = new MailAddress("*****@*****.**", "too"); var package = new Package { PackageRegistration = new PackageRegistration { Id = "smangit" }, Version = "1.42.0.1", }; var messageService = TestableMessageService.Create( GetService <AuthenticationService>(), GetConfigurationService()); var reportPackageRequest = new ReportPackageRequest { AlreadyContactedOwners = true, FromAddress = from, Message = "Abuse!", Package = package, Reason = "Reason!", RequestingUser = new User { Username = "******", EmailAddress = "*****@*****.**" }, Signature = "Joe Schmoe", Url = TestUtility.MockUrlHelper(), CopySender = true, }; messageService.ReportAbuse(reportPackageRequest); var message = messageService.MockMailSender.Sent.Single(); Assert.Equal(TestGalleryOwner, message.To.Single()); Assert.Equal(TestGalleryOwner, message.From); Assert.Equal(reportPackageRequest.FromAddress, message.ReplyToList.Single()); Assert.Equal(reportPackageRequest.FromAddress, message.CC.Single()); Assert.DoesNotContain("Owners", message.Body); }
public virtual ActionResult ReportAbuse(string id, string version, ReportAbuseViewModel reportForm) { if (!ModelState.IsValid) { return ReportAbuse(id, version); } var package = _packageService.FindPackageByIdAndVersion(id, version); if (package == null) { return HttpNotFound(); } User user = null; MailAddress from; if (Request.IsAuthenticated) { user = _userService.FindByUsername(HttpContext.User.Identity.Name); from = user.ToMailAddress(); } else { from = new MailAddress(reportForm.Email); } var request = new ReportPackageRequest { AlreadyContactedOwners = reportForm.AlreadyContactedOwner, FromAddress = from, Message = reportForm.Message, Package = package, Reason = EnumHelper.GetDescription(reportForm.Reason.Value), RequestingUser = user, Url = Url }; _messageService.ReportAbuse(request ); TempData["Message"] = "Your abuse report has been sent to the gallery operators."; return Redirect(Url.Package(id, version)); }
public virtual ActionResult ReportAbuse(string id, string version, ReportAbuseViewModel reportForm) { // Html Encode the message reportForm.Message = System.Web.HttpUtility.HtmlEncode(reportForm.Message); if (!ModelState.IsValid) { return ReportAbuse(id, version); } var package = _packageService.FindPackageByIdAndVersion(id, version); if (package == null) { return HttpNotFound(); } User user = null; MailAddress from; if (Request.IsAuthenticated) { user = GetCurrentUser(); from = user.ToMailAddress(); } else { from = new MailAddress(reportForm.Email); } var request = new ReportPackageRequest { AlreadyContactedOwners = reportForm.AlreadyContactedOwner, FromAddress = from, Message = reportForm.Message, Package = package, Reason = EnumHelper.GetDescription(reportForm.Reason.Value), RequestingUser = user, Url = Url, CopySender = reportForm.CopySender, Signature = reportForm.Signature }; _messageService.ReportAbuse(request); TempData["Message"] = "Your abuse report has been sent to the gallery operators."; return Redirect(Url.Package(id, version)); }
public void WillCopySenderIfAsked() { var from = new MailAddress("*****@*****.**", "too"); var package = new Package { PackageRegistration = new PackageRegistration { Id = "smangit" }, Version = "1.42.0.1", }; var messageService = new TestableMessageService(); var reportPackageRequest = new ReportPackageRequest { AlreadyContactedOwners = true, FromAddress = from, Message = "Abuse!", Package = package, Reason = "Reason!", RequestingUser = new User { Username = "******", EmailAddress = "*****@*****.**" }, Signature = "Joe Schmoe", Url = TestUtility.MockUrlHelper(), CopySender = true, }; messageService.ReportAbuse(reportPackageRequest); var message = messageService.MockMailSender.Sent.Single(); Assert.Equal(TestGalleryOwner, message.To.Single()); Assert.Equal(TestGalleryOwner, message.From); Assert.Equal(reportPackageRequest.FromAddress, message.ReplyToList.Single()); Assert.Equal(reportPackageRequest.FromAddress, message.CC.Single()); Assert.DoesNotContain("Owners", message.Body); }
public virtual async Task<ActionResult> ReportMyPackage(string id, string version, ReportAbuseViewModel reportForm) { // Html Encode the message reportForm.Message = System.Web.HttpUtility.HtmlEncode(reportForm.Message); if (!ModelState.IsValid) { return ReportMyPackage(id, version); } var package = _packageService.FindPackageByIdAndVersion(id, version); if (package == null) { return HttpNotFound(); } var user = GetCurrentUser(); MailAddress from = user.ToMailAddress(); var request = new ReportPackageRequest { FromAddress = from, Message = reportForm.Message, Package = package, Reason = EnumHelper.GetDescription(reportForm.Reason.Value), RequestingUser = user, Url = Url, CopySender = reportForm.CopySender }; var subject = $"Owner Support Request for '{package.PackageRegistration.Id}' version {package.Version}"; var requestorEmailAddress = user != null ? user.EmailAddress : reportForm.Email; var reason = EnumHelper.GetDescription(reportForm.Reason.Value); await _supportRequestService.AddNewSupportRequestAsync(subject, reportForm.Message, requestorEmailAddress, reason, user, package); _messageService.ReportMyPackage(request); TempData["Message"] = "Your support request has been sent to the gallery operators."; return Redirect(Url.Package(id, version)); }