Beispiel #1
0
		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;
		}