using framework_business; using framework_library; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Reflection; using System.Web; using System.Web.Services; using System.Web.UI; using System.Web.UI.WebControls; public partial class Admin_SignIn : System.Web.UI.Page { /// /// Page Load Event /// /// /// protected void Page_Load(object sender, EventArgs e) { oSetup _setup = handler.ReturnSetup(); if (!Page.IsPostBack) { if (utils.verifySession("user")) { oUser admin = (oUser)Session["user"]; if (admin.userType == pNums.UserType.AdminUser.GetHashCode()) { if (_setup.code == admin.customerCode) { Response.Redirect("Admin.aspx", false); } else if (admin.customerCode == "EVOL-1")//allow on all instances { Response.Redirect("Admin.aspx", false); } } else { Response.Redirect("/home", false); } } if (_setup.logoUploaded != String.Empty) imgLogo.Src = "~/upload/image/" + _setup.logoUploaded; } divGoogleSignIn.Visible = _setup.isGoogleSignIn; } /// /// Sign Click /// /// /// protected void btnLogin_Click(object sender, EventArgs e) { bool canProceed = false; try { if (txtEmail.Value == "admin@evolutionsoftware.co.za" && txtPassword.Value == "Blu3Pal3tt3123#987!") { oUser admin = new oUser(); admin.customerCode = "EVOL-1"; admin.name = "Palette Admin User"; admin.email = "admin@evolutionsoftware.co.za"; admin.isSetup = true; admin.recId = -1; admin.isActive = true; admin.userType = pNums.UserType.AdminUser.GetHashCode(); Session["user"] = admin; canProceed = true; } else { encryption encrypt = new encryption("p@l3tt3"); string email = txtEmail.Value; //encrypt password string password = encrypt.encryptValue(txtPassword.Value); oSetup _setup = handler.ReturnSetup(); foreach (oUser admin in xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "email,password,isActive", email + "," + password + ",1", "", "pal_", true)) { if (_setup.code == admin.customerCode) { Session["user"] = admin; canProceed = true; break; } else if (admin.customerCode == "EVOL-1")//allow on all instances { Session["user"] = admin; canProceed = true; break; } } } if (canProceed) { Response.Redirect(GetRedirectPath(),false); } else { pnlResult.Visible = true; } } catch (Exception ex) { exception.HandleException("SignIn:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private string GetRedirectPath() { pnlResult.Visible = false; oSetup _setup = handler.ReturnSetup(false); if (!_setup.isWebsite) { return "/home"; } else { return "Admin.aspx"; } } [WebMethod] public static string GoogleLogin(string name, string email, string profileId, string givenName, string familyName, string imageURL) { try { string path = ""; oGoogleUser gUser = new oGoogleUser(); foreach (oGoogleUser guItem in xData.GetTypedByCriteriaSpecific("recId", typeof(oGoogleUser), "email", email, "", "pal_", true)) { gUser = guItem; } gUser.email = email; gUser.familyName = familyName; gUser.givenName = givenName; gUser.imageURL = imageURL; gUser.name = name; gUser.profileId = profileId; oUser user = new oUser(); oSetup setup = handler.ReturnSetup(); foreach (oUser uItem in xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "email,customerCode", email + ",~()" + setup.code + "|" + "EVOL-1", "", "pal_", true)) { user = uItem; } if (user.recId == 0) { //do not register unknown users - rather provide message ////register user //encryption encrypt = new encryption("p@l3tt3"); //user.customerCode = setup.code; //user.isActive = true; //user.name = givenName; //user.surname = familyName; //user.email = email; //user.tel = ""; //user.password = encrypt.encryptValue(utils.RandomString(10, true)); ////user.isTermsAccepted = chkRegTerms.Checked; //user.dateCreated = DateTime.Now; //user.userType = pNums.UserType.WebsiteUser.GetHashCode(); //user.recId = xData.SaveTyped("recId", typeof(oUser), user, "pal_", true); } else { gUser.userId = user.recId; HttpContext.Current.Session["user"] = user; if (gUser.recId > 0) xData.UpdateTyped("recId", gUser.recId.ToString(), typeof(oGoogleUser), gUser, "pal_", true); else gUser.recId = xData.SaveTyped("recId", typeof(oGoogleUser), gUser, "pal_", true); oSetup _setup = handler.ReturnSetup(false); if (!_setup.isWebsite) { path = "/home"; } else { path = "/Admin.aspx"; } } return path; } catch (Exception ex) { return ex.Message; } } protected void lnkForgot_Click(object sender, EventArgs e) { pnlLogin.Visible = false; pnlForgot.Visible = true; } protected void lnkBackToLogin_Click(object sender, EventArgs e) { pnlLogin.Visible = true; pnlForgot.Visible = false; ScriptManager.RegisterStartupScript(this, GetType(), "renderButton", "renderButton();", true); } protected void btnReset_Click(object sender, EventArgs e) { string encCode = String.Empty; bool resetValid = false; try { oSetup _setup = handler.ReturnSetup(); foreach (oUser usrReset in xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "isActive,email,customerCode", "1," + txtResetEmail.Value + "," + _setup.code, "", "pal_", true)) { resetValid = true; encryption encReset = new encryption("r3s3t"); usrReset.isReset = true; usrReset.resetCode = utils.RandomString(6, true); usrReset.dateUpdated = DateTime.Now; //update user with reset code and reset status also date updated set as this is used to determine if reset has expirecd if (xData.UpdateTyped("recId", usrReset.recId.ToString(), typeof(oUser), usrReset, "pal_", true)) { //encrypt code for resetting encCode = HttpUtility.UrlEncode(encReset.encryptValue(usrReset.resetCode)); oEmail email = new oEmail(); string resetbody = String.Empty; string Subject = String.Empty; foreach (oTemplate resetTemplate in xData.GetTypedByCriteriaSpecific("recId", typeof(oTemplate), "templateTypeId", pNums.TemplateType.OutboundResponse.GetHashCode().ToString())) { if (resetTemplate.templateName.ToLower().Contains("reset")) { resetbody = resetTemplate.templateContent; Subject = resetTemplate.templateName; break; } } //merge internal body with values resetbody = resetbody.Replace("src=\"/images", "src=\"" + ConfigurationManager.AppSettings["WebAddy"] + "/images"); resetbody = resetbody.Replace("{WebAddress}", ConfigurationManager.AppSettings["WebAddy"]); resetbody = resetbody.Replace("{encCode}", encCode); /* CVH 2016-09-13 Use communication email in Company Setup as from email address */ oSetup setup = handler.ReturnSetup(); email.fromAddress = setup.communicationEmail; email.toAddress = usrReset.email; email.Body = resetbody; /* CVH 2016-09-13 Subject shouldn't read "Palette", get from config */ //email.Subject = "Palette - " + Subject; email.Subject = ConfigurationManager.AppSettings["WebAddy"].Replace("{content}", Subject); /* CVH 2016-09-13 Set from address display name from Company Setup */ if (communication.SendAnEmail(email, setup.sendingEmailName)) { lblResultReset.Visible = true; lblResultReset.Text = "Success: We have sent you further instructions."; } } } if (!resetValid) { lblResultReset.Visible = true; lblResultReset.Text = "Email address not found."; } } catch (Exception ex) { exception.HandleException("Master:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } }