Esempio n. 1
0
        protected void loginClick(object sender, EventArgs e)
        {
            if (!(string.IsNullOrEmpty(loginUsername.Text.Trim()) || string.IsNullOrEmpty(loginPassword.Text.Trim())))
            {
                var patron = new Patron();
                if (Patron.Login(loginUsername.Text.Trim(), loginPassword.Text))
                {
                    var bp = Patron.GetObjectByUsername(loginUsername.Text.Trim());

                    var pgm = DAL.Programs.FetchObject(bp.ProgID);
                    if (pgm == null)
                    {
                        var progID = Programs.GetDefaultProgramForAgeAndGrade(bp.Age, bp.SchoolGrade.SafeToInt());
                        bp.ProgID = progID;
                        bp.Update();
                    }
                    new SessionTools(Session).EstablishPatron(bp);

                    TestingBL.CheckPatronNeedsPreTest();
                    TestingBL.CheckPatronNeedsPostTest();

                    if (loginRememberMe.Checked)
                    {
                        var loginUsernameCookie = new HttpCookie(CookieKey.Username);
                        loginUsernameCookie.Expires = DateTime.Now.AddDays(14);
                        loginUsernameCookie.Value   = loginUsername.Text.Trim();
                        Response.SetCookie(loginUsernameCookie);
                    }
                    else
                    {
                        if (Request.Cookies[CookieKey.Username] != null)
                        {
                            Response.Cookies[CookieKey.Username].Expires = DateTime.Now.AddDays(-1);
                        }
                    }


                    if (ViewState[SessionKey.RequestedPath] != null)
                    {
                        string requestedPath = ViewState[SessionKey.RequestedPath].ToString();
                        Response.Redirect(requestedPath);
                    }
                    else
                    {
                        Response.Redirect("~");
                    }
                }
                else
                {
                    Session[SessionKey.PatronMessage]          = "Invalid username or password.";
                    Session[SessionKey.PatronMessageLevel]     = PatronMessageLevels.Danger;
                    Session[SessionKey.PatronMessageGlyphicon] = "remove";
                    Session[SessionKey.Patron] = null;
                }
            }
        }
        protected void loginPopupClick(object sender, EventArgs e)
        {
            if (!(string.IsNullOrEmpty(loginPopupUsername.Text.Trim()) ||
                  string.IsNullOrEmpty(loginPopupPassword.Text.Trim())))
            {
                var patron = new Patron();
                if (Patron.Login(loginPopupUsername.Text.Trim(), loginPopupPassword.Text))
                {
                    var bp = Patron.GetObjectByUsername(loginPopupUsername.Text.Trim());

                    var pgm = DAL.Programs.FetchObject(bp.ProgID);
                    if (pgm == null)
                    {
                        int schoolGrade;
                        int.TryParse(bp.SchoolGrade, out schoolGrade);
                        var progID = Programs.GetDefaultProgramForAgeAndGrade(bp.Age, schoolGrade);
                        bp.ProgID = progID;
                        bp.Update();
                    }


                    /* recalulate goal cache to accomdate changes in program length and point multipliers */
                    ProgramGamePointConversion pgc = null;

                    foreach (ActivityType activityTypeValue in Enum.GetValues(typeof(ActivityType)))
                    {
                        int activityTypeId = (int)activityTypeValue;
                        var temp           = ProgramGamePointConversion.FetchObjectByActivityId(pgm.PID,
                                                                                                activityTypeId);


                        if (temp != null && temp.PointCount > 0)
                        {
                            if (activityTypeValue == ActivityType.Minutes || activityTypeValue == ActivityType.Pages)
                            {
                                pgc = temp;
                                break;
                            }
                        }
                    }

                    if (pgc != null)
                    {
                        bp.RecalculateGoalCache(pgm, pgc);
                        bp.Update();
                    }


                    new SessionTools(Session).EstablishPatron(bp);

                    TestingBL.CheckPatronNeedsPreTest();
                    TestingBL.CheckPatronNeedsPostTest();

                    if (loginPopupRememberMe.Checked)
                    {
                        var loginUsernameCookie = new HttpCookie(CookieKey.Username);
                        loginUsernameCookie.Expires = DateTime.Now.AddDays(14);
                        loginUsernameCookie.Value   = loginPopupUsername.Text.Trim();
                        Response.SetCookie(loginUsernameCookie);
                    }
                    else
                    {
                        if (Request.Cookies[CookieKey.Username] != null)
                        {
                            Response.Cookies[CookieKey.Username].Expires = DateTime.Now.AddDays(-1);
                        }
                    }

                    if (Session[SessionKey.RequestedPath] != null)
                    {
                        string requestedPath = Session[SessionKey.RequestedPath].ToString();
                        Session.Remove(SessionKey.RequestedPath);
                        Response.Redirect(requestedPath);
                    }
                    else if (ViewState[SessionKey.RequestedPath] != null)
                    {
                        string requestedPath = ViewState[SessionKey.RequestedPath].ToString();
                        Response.Redirect(requestedPath);
                    }
                    else
                    {
                        Response.Redirect("~");
                    }
                }
                else
                {
                    LoginPopupErrorMessage = "Invalid username or password.";
                    new SessionTools(Session).ClearPatron();
                }
            }
        }
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                object tokenObject = this.ViewState["token"];
                if (tokenObject == null)
                {
                    new SessionTools(Session).AlertPatron(GetResourceString("password-recovery-expired"),
                                                          PatronMessageLevels.Warning,
                                                          "exclamation-sign");
                    Response.Redirect("~/Recover.aspx");
                    return;
                }

                var user = Patron.UpdatePasswordByToken(tokenObject.ToString(),
                                                        NPassword.Text);

                if (user == null)
                {
                    new SessionTools(Session).AlertPatron(GetResourceString("password-recovery-expired"),
                                                          PatronMessageLevels.Warning,
                                                          "exclamation-sign");
                    Response.Redirect("~/Recovery.aspx");
                    return;
                }

                var values = new {
                    SystemName    = SRPSettings.GetSettingValue("SysName", user.TenID),
                    ContactName   = SRPSettings.GetSettingValue("ContactName", user.TenID),
                    ContactEmail  = SRPSettings.GetSettingValue("ContactEmail", user.TenID),
                    RemoteAddress = Request.UserHostAddress,
                    UserEmail     = user.EmailAddress,
                    Username      = user.Username,
                    LoginLink     = string.Format("{0}{1}",
                                                  WebTools.GetBaseUrl(Request),
                                                  "/Login.aspx"),
                    PasswordResetSuccessSubject = "Your password has been reset!"
                };

                this.Log().Info("Password reset process for {0} ({1}) complete from {2}",
                                values.Username,
                                values.UserEmail,
                                values.RemoteAddress);

                // TODO email - move this template out to the database
                StringBuilder body = new StringBuilder();
                body.Append("<p>The password change has been successful for the {SystemName} account: {Username}.</p>");
                body.Append("<p>You may now <a href=\"{LoginLink}\">log in</a> using your new password.</p>");
                body.Append("<p>If you have any comments or questions, please contact ");
                body.Append("{ContactName} at <a href=\"mailto:{ContactEmail}\">{ContactEmail}</a>.</p>");
                body.Append("<p style=\"font-size: smaller;\"><em>This password request was ");
                body.Append("completed from: {RemoteAddress}.</em></p>");

                new EmailService().SendEmail(user.EmailAddress,
                                             "{SystemName} - {PasswordResetSuccessSubject}".FormatWith(values),
                                             body.ToString().FormatWith(values));


                var st = new SessionTools(Session);
                st.EstablishPatron(user);
                st.AlertPatron(GetResourceString("Your password has been reset!"),
                               glyphicon: "ok");

                TestingBL.CheckPatronNeedsPreTest();
                TestingBL.CheckPatronNeedsPostTest();

                Response.Redirect("~");
            }
        }