public bool ProcessLoginPart(ref int currentIndex, string[] urlParts) { if (urlParts[currentIndex].StartsWith("login") || urlParts[currentIndex].StartsWith("logout")) { try { LoginPartLogOutFirst = urlParts[currentIndex].StartsWith("logout"); // logout is used when forcing a log out (e.g. when admin or mod is needed) if (urlParts[currentIndex].Contains('-')) { string[] loginArr = urlParts[currentIndex].Split('-'); LoginPartUsrK = loginArr.Length >= 2 ? int.Parse(loginArr[1]) : 0; LoginPartLoginString = loginArr.Length >= 3 ? loginArr[2] : ""; } currentIndex++; #region construct LoggedInPlainUrl string redirectUrl = ""; for (int part = currentIndex; part < urlParts.Length; part++) redirectUrl += "/" + urlParts[part]; if (redirectUrl.Length == 0) LoggedInPlainUrl = "/"; else LoggedInPlainUrl = redirectUrl; if (HttpContext.Current.Request.QueryString.ToString().Length > 0) LoggedInPlainUrl += "?" + HttpContext.Current.Request.QueryString.ToString(); #endregion Usr u = null; try { u = new Usr(LoginPartUsrK); if (u.LoginString.ToLower().Equals(LoginPartLoginString.ToLower())) { if (!u.IsEmailVerified) { u.IsEmailVerified = true; u.Update(); } } } catch { } if (Usr.Current == null || (LoginPartUsrK > 0 && Usr.Current.K != LoginPartUsrK)) { if (u.LoginString.ToLower().Equals(LoginPartLoginString.ToLower())) { LoginPartUsrEmail = u.Email; LoginPartUsrIsSkeleton = u.IsSkeleton; LoginPartUsrIsFacebookNotConfirmed = !u.FacebookStory.HasValue; LoginPartUsrIsEnhancedSecurity = u.EnhancedSecurity && (Usr.Current == null || !Usr.Current.IsAdmin); LoginPartUsrNeedsCaptcha = u.NeedsCaptcha.HasValue && u.NeedsCaptcha.Value && Settings.CaptchaEnabledStatus == Settings.CaptchaEnabledStatusOption.On; LoginPartUsrHomePlaceK = u.HomePlaceK; LoginPartUsrFavouriteMusicK = u.FavouriteMusicTypeK; LoginPartUsrSendSpottedEmails = u.SendSpottedEmails; LoginPartUsrSendEflyers = u.SendFlyers; if (LoginPartUsrNeedsCaptcha) { string text = Cambro.Misc.Utility.GenRandomChars(5).ToUpper() + "|" + HttpUtility.UrlEncode(u.Email.ToLower()); LoginPartUsrCaptchaEncrypted = Cambro.Misc.Utility.Encrypt(text, DateTime.Now.AddHours(1)); } if (LoginPartUsrIsSkeleton || LoginPartUsrIsEnhancedSecurity || LoginPartUsrNeedsCaptcha) { PageType = PageTypes.Pages; PageName = "AutoLogin"; return true; } else { u.LogInAsThisUserNew(); if (!DisableAllActions) { if (u.EmailHold) HttpContext.Current.Response.Redirect("/popup/unsubscribe"); else HttpContext.Current.Response.Redirect(LoggedInPlainUrl); } } } else { LoginFailed = true; PageType = PageTypes.Pages; PageName = "AutoLogin"; return true; } } else if (LoginPartLogOutFirst) { PageType = PageTypes.Pages; PageName = "AutoLogin"; return true; } else { if (!DisableAllActions) HttpContext.Current.Response.Redirect(LoggedInPlainUrl); } //if (Usr.Current != null && (LoginPartUsrK == 0 || Usr.Current.K == LoginPartUsrK) && LoginPartLogin) //{ // if (!DisableAllActions) // { // if (!Usr.Current.IsEmailVerified && // LoginPartUsrK > 0 && // LoginPartLoginString.Length > 0 && // Usr.Current.LoginString.ToLower() == LoginPartLoginString.ToLower()) // { // Usr.Current.IsEmailVerified = true; // Usr.Current.Update(); // Usr.Current = null; // } // if (Usr.Current.EmailHold) // HttpContext.Current.Response.Redirect("/popup/unsubscribe"); // else // HttpContext.Current.Response.Redirect(LoggedInPlainUrl); // } // return false; //} //else //{ // PageType = PageTypes.Pages; // PageName = "AutoLogin"; // return true; //} } catch { PageType = PageTypes.Pages; PageName = "AutoLogin"; return true; } } return false; }