internal async Task <ResultBundle> RegisterUser(string originalCaptcha, DALContext context, IEmailSender _emailSender, string host) { var r = Validate(originalCaptcha); // have to del session for Captcha http://www.dotnettips.info/post/1809/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%da%a9%d9%be%da%86%d8%a7%db%8c%db%8c-captcha-%d8%b3%d8%b1%db%8c%d8%b9-%d9%88-%d8%b3%d8%a7%d8%af%d9%87-%d8%af%d8%b1-asp-net-mvc-5 if (r.IsSuccessful) { var user = context.SearchForUserByEmailAddress(EmailAddress); if (user != null) { r.AddMessage("آدرس ایمیل وارد شده قبلا برای کاربر دیگری ثبت شده است. اگر رمز عبور خود را فراموش کرده اید از طریق صفحه (ورود) اقدام به بازیابی آن نمایید."); r.IsSuccessful = false; } else { string key = Guid.NewGuid().ToString(); string keyUrl = string.Format("{0}/Account/ConfirmEmailAddress/{1}", host, key); bool emailSent = await _emailSender.SendEmailConfirmationForm(EmailAddress, keyUrl); if (!emailSent) { r.AddMessage("آدرس ایمیل وارد شده معتبر نمی باشد. امکان ثبت نام با این ایمیل وجود ندارد."); r.IsSuccessful = false; } else { string hashPassword = Utils.GenerateHashPassword(Password); if (!await AddLogin(context, hashPassword, key)) { r.AddMessage("خطایی در هنگام ذخیره اطلاعات شما در دیتابیس رخ داده است لطفا مجددا تلاش کنید."); r.IsSuccessful = false; } else { // Registeration is accepted r.UserData = context.Login(EmailAddress, hashPassword); } } } } return(r); }