private void SendEmailIfNotActivatedOrLockedOut(IMember member)
        {
            string tokenField = string.Empty, tokenExpiryField = string.Empty, emailSubjectField = string.Empty, emailBodyField = string.Empty;
            var    loginPage = Umbraco.ContentSingleAtXPath("//loginMember");

            if (loginPage == null)
            {
                // We can't send emails if we don't have the content, so just return.
                return;
            }

            if (!member.IsApproved)
            {
                // The member has not yet activated their account and is trying to login.
                tokenField        = "approvalToken";
                tokenExpiryField  = "approvalTokenExpires";
                emailSubjectField = "approveMemberSubject";
                emailBodyField    = "approveMemberBody";
            }
            else if (member.IsLockedOut)
            {
                // Approved member, OK to reset their password.
                tokenField        = "passwordResetToken";
                tokenExpiryField  = "passwordResetTokenExpires";
                emailSubjectField = "resetPasswordSubject";
                emailBodyField    = "resetPasswordBody";
            }

            // Create a password reset / approval token including the id so we can find the member
            var(token, expires) = _verificationToken.TokenFor(member.Id);
            member.SetValue(tokenField, token);
            member.SetValue(tokenExpiryField, expires);

            Services.MemberService.Save(member);

            // Send the password reset / member approval email
            var(sender, body) = _emailFormatter.FormatEmailContent(loginPage.Value <string>(emailSubjectField),
                                                                   loginPage.Value <string>(emailBodyField),
                                                                   new Dictionary <string, string>
            {
                { "name", member.Name },
                { "email", member.Email },
                { "token", token },
                { "domain", GetRequestUrlAuthority() }
            });
            _emailSender.SendEmail(member.Email, sender, body);
        }
        public override ActionResult Index(ContentModel model)
        {
            var homePageModel = new HomePageModel(model.Content)
            {
                PastEvents     = new List <EventsPage>(),
                UpcomingEvents = new List <EventsPage>()
            };

            var episodesFolder = Umbraco.ContentSingleAtXPath($"//{EpisodesFolder.ModelTypeAlias}");

            if (episodesFolder != null)
            {
                var episodes = episodesFolder.Children;
                foreach (var ep in episodes)
                {
                    homePageModel.AllEpisodes.Add((Episode)ep);
                }
                homePageModel.LatestEpisode = Enumerable.OrderByDescending <Episode, DateTime>(homePageModel.AllEpisodes, x => x.PublishedDate).FirstOrDefault();
            }

            var allEventPages = Umbraco.ContentAtXPath($"//{EventsPage.ModelTypeAlias}");

            foreach (var page in allEventPages)
            {
                if (!page.IsVisible())
                {
                    continue;
                }
                if (!(page is EventsPage eventsPage))
                {
                    continue;
                }

                if (eventsPage.Part2StartDate >= DateTime.Today)
                {
                    homePageModel.UpcomingEvents.Add(eventsPage);
                }
                else
                {
                    homePageModel.PastEvents.Add(eventsPage);
                }
            }

            homePageModel.PastEvents = homePageModel.PastEvents.OrderByDescending(x => x.Part1StartDate).ToList();
            return(CurrentTemplate(homePageModel));
        }
Beispiel #3
0
        public ActionResult GeneratePDF(PDfdownloadButtonViewModel content)
        {
            string fileName = content.formData;

            var xpath = Umbraco.ContentSingleAtXPath("//pDFTemplate");

            // Added Umbraco.Core reference to allow to use IsNullOrWhiteSpace helper.
            if (fileName.IsNullOrWhiteSpace())
            {
                fileName = "OwainCodes.PDF";
            }


            return(new Rotativa.UrlAsPdf("https://www.owain.codes")
            {
                FileName = fileName
            });
        }
Beispiel #4
0
        /// <summary>
        /// Gets an entity by a xpath query
        /// </summary>
        /// <param name="query"></param>
        /// <param name="nodeContextId"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public EntityBasic GetByQuery(string query, int nodeContextId, UmbracoEntityTypes type)
        {
            // TODO: Rename this!!! It's misleading, it should be GetByXPath


            if (type != UmbracoEntityTypes.Document)
            {
                throw new ArgumentException("Get by query is only compatible with entities of type Document");
            }


            var q    = ParseXPathQuery(query, nodeContextId);
            var node = Umbraco.ContentSingleAtXPath(q);

            if (node == null)
            {
                return(null);
            }

            return(GetById(node.Id, type));
        }
        public ActionResult GeneratePDF(string content)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            string fileName = content;


            var xpath = Umbraco.ContentSingleAtXPath("//pDFTemplate");

            // Added Umbraco.Core reference to allow to use IsNullOrWhiteSpace helper.
            if (fileName.IsNullOrWhiteSpace())
            {
                fileName = "OwainCodes.PDF";
            }


            return(new Rotativa.UrlAsPdf("https://www.owain.codes")
            {
                FileName = fileName
            });
        }
Beispiel #6
0
        public override void Execute()
        {
            #line 5 "..\..\Views\Partials\_Logout.cshtml"

            var logoutPage        = Umbraco.ContentSingleAtXPath("//logoutMember");
            var loggedIn          = !string.IsNullOrEmpty(Model.Value <string>("loggedIn")) ? Model.Value <string>("loggedIn") : logoutPage?.Value <string>("loggedIn");
            var currentMemberName = Members.GetCurrentMember()?.Name; // GetCurrentMember() returns null when the member has just confirmed their new email address in another tab


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n");


            #line 11 "..\..\Views\Partials\_Logout.cshtml"
            if (!string.IsNullOrEmpty(currentMemberName))
            {
            #line default
            #line hidden

            #line 12 "..\..\Views\Partials\_Logout.cshtml"
                Write(Html.ProtectEmailAddresses(loggedIn?.Replace("{{NAME}}", currentMemberName)));


            #line default
            #line hidden

            #line 12 "..\..\Views\Partials\_Logout.cshtml"
            }


            #line default
            #line hidden
            WriteLiteral("\r\n");


            #line 15 "..\..\Views\Partials\_Logout.cshtml"
            using (Html.BeginUmbracoForm <LogoutMemberSurfaceController>("HandleLogout"))
            {
            #line default
            #line hidden

            #line 17 "..\..\Views\Partials\_Logout.cshtml"
                Write(Html.AntiForgeryToken());


            #line default
            #line hidden

            #line 17 "..\..\Views\Partials\_Logout.cshtml"



            #line default
            #line hidden
                WriteLiteral("    <button");

                WriteLiteral(" class=\"btn btn-primary\"");

                WriteLiteral(">");


            #line 18 "..\..\Views\Partials\_Logout.cshtml"
                Write(logoutPage?.Value("logoutButton"));


            #line default
            #line hidden
                WriteLiteral("</button>\r\n");


            #line 19 "..\..\Views\Partials\_Logout.cshtml"
            }


            #line default
            #line hidden
        }
        public override void Execute()
        {
            #line 6 "..\..\Views\Partials\_Login.cshtml"

            var loginPage  = Umbraco.ContentSingleAtXPath("//loginMember");
            var loginModel = new LoginModel();
            loginModel.RedirectUrl = Request.QueryString["ReturnUrl"] ?? "/";
            if (!loginModel.RedirectUrl.StartsWith("/"))
            {
                loginModel.RedirectUrl = "/";
            }


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n");


            #line 16 "..\..\Views\Partials\_Login.cshtml"
            if (Model.Key != loginPage?.Key)
            {
                if (Members.IsLoggedIn())
                {
                    var permissionRequired = loginPage.Value <IHtmlString>("permissionRequired").ToHtmlString().Replace("{{NAME}}", Members.GetCurrentMember().Name);


            #line default
            #line hidden

            #line 21 "..\..\Views\Partials\_Login.cshtml"
                    Write(Html.ProtectEmailAddresses(permissionRequired));


            #line default
            #line hidden

            #line 21 "..\..\Views\Partials\_Login.cshtml"
                }
                else
                {
            #line default
            #line hidden

            #line 25 "..\..\Views\Partials\_Login.cshtml"
                    Write(Html.ProtectEmailAddresses(loginPage.Value <IHtmlString>("loginRequired")));


            #line default
            #line hidden

            #line 25 "..\..\Views\Partials\_Login.cshtml"
                }
                loginModel.RedirectUrl = Request.Url.AbsolutePath;
            }


            #line default
            #line hidden
            WriteLiteral("\r\n");


            #line 30 "..\..\Views\Partials\_Login.cshtml"
            using (Html.BeginUmbracoForm <LoginMemberSurfaceController>("Login"))
            {
            #line default
            #line hidden

            #line 32 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.HiddenFor(m => loginModel.RedirectUrl));


            #line default
            #line hidden

            #line 32 "..\..\Views\Partials\_Login.cshtml"



            #line default
            #line hidden

            #line 33 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.ValidationSummary("loginModel", true));


            #line default
            #line hidden

            #line 33 "..\..\Views\Partials\_Login.cshtml"



            #line default
            #line hidden

            #line 34 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.AntiForgeryToken());


            #line default
            #line hidden

            #line 34 "..\..\Views\Partials\_Login.cshtml"



            #line default
            #line hidden
                WriteLiteral("    <div");

                WriteLiteral(" class=\"form-group\"");

                WriteLiteral(">\r\n");

                WriteLiteral("        ");


            #line 37 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.LabelFor(m => loginModel.Username, "Email"));


            #line default
            #line hidden
                WriteLiteral("\r\n");

                WriteLiteral("        ");


            #line 38 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.TextBoxFor(m => loginModel.Username, new { @class = "form-control", type = "email", required = "required", aria_describedby = "form-email", autocorrect = "off", autocapitalize = "off", autocomplete = "username" }));


            #line default
            #line hidden
                WriteLiteral("\r\n");

                WriteLiteral("        ");


            #line 39 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.ValidationMessageFor(m => loginModel.Username, "The email field is required", new { id = "form-email" }));


            #line default
            #line hidden
                WriteLiteral("\r\n    </div>\r\n");

                WriteLiteral("    <div");

                WriteLiteral(" class=\"form-group\"");

                WriteLiteral(">\r\n");

                WriteLiteral("        ");


            #line 42 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.LabelFor(m => loginModel.Password));


            #line default
            #line hidden
                WriteLiteral("\r\n");

                WriteLiteral("        ");


            #line 43 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.PasswordFor(m => loginModel.Password, new { @class = "form-control", required = "required", aria_describedby = "form-password", autocorrect = "off", autocapitalize = "off", autocomplete = "current-password" }));


            #line default
            #line hidden
                WriteLiteral("\r\n");

                WriteLiteral("        ");


            #line 44 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.ValidationMessageFor(m => loginModel.Password, "The password field is required", new { id = "form-password" }));


            #line default
            #line hidden
                WriteLiteral("\r\n    </div>\r\n");


            #line 46 "..\..\Views\Partials\_Login.cshtml"



            #line default
            #line hidden
                WriteLiteral("    <button");

                WriteLiteral(" class=\"btn btn-primary\"");

                WriteLiteral(">");


            #line 47 "..\..\Views\Partials\_Login.cshtml"
                Write(loginPage.Value("loginButton"));


            #line default
            #line hidden
                WriteLiteral("</button>\r\n");


            #line 48 "..\..\Views\Partials\_Login.cshtml"
            }


            #line default
            #line hidden
            WriteLiteral("\r\n");


            #line 50 "..\..\Views\Partials\_Login.cshtml"
            Write(Html.ProtectEmailAddresses(loginPage?.Value <IHtmlString>("resetPassword")));


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n");


            #line 52 "..\..\Views\Partials\_Login.cshtml"
            if (loginPage != null && loginPage.HasValue("migratedMemberAccounts"))
            {
            #line default
            #line hidden
                WriteLiteral("    <div");

                WriteLiteral(" class=\"alert alert-info\"");

                WriteLiteral(">\r\n");

                WriteLiteral("        ");


            #line 55 "..\..\Views\Partials\_Login.cshtml"
                Write(Html.ProtectEmailAddresses(loginPage?.Value <IHtmlString>("migratedMemberAccounts")));


            #line default
            #line hidden
                WriteLiteral("\r\n    </div>\r\n");


            #line 57 "..\..\Views\Partials\_Login.cshtml"
            }


            #line default
            #line hidden
        }