public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var check = new CheckAccountViewModel() { Email = model.Email, PhoneNumber = model.Email, UserName = model.Email }; var user = await _userService.FindUserByEmailOrUserNameOrPhoneNumber(check); if (user == null) { // Don't reveal that the user does not exist return(RedirectToAction("ResetPasswordConfirmation", "Account")); } var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password); if (result.Succeeded) { return(RedirectToAction("ResetPasswordConfirmation", "Account")); } AddErrors(result); return(View()); }
public async Task <ActionResult> TransationUser(string keyword, int page = 1) { ViewBag.Keyword = keyword; var check = new CheckAccountViewModel() { Email = keyword, PhoneNumber = keyword, UserName = keyword }; var user = await _userService.GetUserByConditionAsync(check); if (user != null) { var transactions = await _transactionService.GetAllTransactionsById(user.Id, page); transactions.keyword = keyword; return(View(transactions)); } var data = new PaginationSet <TransactionViewModel>() { Page = page, TotalCount = 1, TotalPages = 1, Items = new List <TransactionViewModel>(), MaxPage = 10 }; return(View(data)); }
public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid) { var check = new CheckAccountViewModel() { Email = model.Email, PhoneNumber = model.Email, UserName = model.Email }; var user = await _userService.FindUserByEmailOrUserNameOrPhoneNumber(check); if (user == null)//|| !(await UserManager.IsEmailConfirmedAsync(user.Id))) { // Don't reveal that the user does not exist or is not confirmed return(View("ForgotPasswordConfirmation")); } // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link string code = UserManager.GeneratePasswordResetToken(user.Id); var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); await _emailService.SendEmailAsync(user.Email, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>"); // await UserManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>"); return(RedirectToAction("ForgotPasswordConfirmation", "Account")); } // If we got this far, something failed, redisplay form return(View(model)); }
public async Task <bool> CheckUpdateOrCreateUser(CheckAccountViewModel model) { var query = await GetMultiAsync(x => x.Email == model.Email || x.UserName == model.UserName || x.PhoneNumber == model.PhoneNumber); if (query.Count() > 1) { return(false); } return(true); }
public async Task <AppUserViewModel> FindUserByEmailOrUserNameOrPhoneNumber(CheckAccountViewModel model) { var user = await GetSingleByConditionAsync(x => x.Email == model.Email || x.UserName == model.UserName || x.PhoneNumber == model.PhoneNumber); if (user != null) { return(_mapper.Map <AppUser, AppUserViewModel>(user)); } return(null); }
public async Task <AppUserViewModel> GetUserByConditionAsync(CheckAccountViewModel model) { var user = await GetSingleByConditionAsync(x => x.Email.Contains(model.Email) || x.UserName.Contains(model.UserName) || x.PhoneNumber.Contains(model.PhoneNumber)); if (user != null) { return(_mapper.Map <AppUser, AppUserViewModel>(user)); } return(null); }
public async Task <ActionResult> Register(RegisterViewModel model) { var check = new CheckAccountViewModel() { Email = model.Email, PhoneNumber = model.PhoneNumber, UserName = model.UserName }; if (ModelState.IsValid && (await _userService.FindUserByEmailOrUserNameOrPhoneNumber(check)) == null) { var messageFree = await _configService.GetConfigByCodeAsync(Common.Constants.MessageFreeKey); var user = new AppUser { UserName = model.UserName, Email = model.Email, FullName = model.FullName, PhoneNumber = model.PhoneNumber, BirthDay = model.BirthDay, Address = string.Empty, Status = Status.Active, Gender = model.Gender, Avatar = Common.Constants.AvatarDefault, DateCreated = DateTime.Now, DateModified = DateTime.Now, PhoneNumberConfirmed = true, Balance = 0, TotalFreeMessage = (messageFree != null && messageFree.ValueNumber.HasValue) ? (int)messageFree.ValueNumber : Common.Constants.MessageFreeDefault }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); await _emailService.SendEmailAsync(model.Email, "Confirm your account", "Thank you for registing to our SMS Online service.<br> Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); return(RedirectToAction("Index", "Home")); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }
public async Task <ActionResult> Edit([Bind(Include = "FullName,BirthDay,Email,Address,Gender,Description,PhoneNumber")] AppUserViewModel userViewModel) { var check = new CheckAccountViewModel() { Email = userViewModel.Email, PhoneNumber = userViewModel.PhoneNumber, UserName = IdentityHelper.CurrentUserName }; var isUpdate = await _userService.CheckUpdateOrCreateUser(check); if (isUpdate) { HttpPostedFileBase fileUpload = Request.Files["fileUpload"]; if (fileUpload != null && fileUpload.ContentLength > 0) { string path = Path.Combine(Server.MapPath("~/Content/uploads/"), Path.GetFileName(fileUpload.FileName)); fileUpload.SaveAs(path); userViewModel.Avatar = "/Content/uploads/" + fileUpload.FileName; } var user = await _userService.GetUserByIdAsync(currentUser, currentUser); if (user != null) { user.FullName = userViewModel.FullName; user.BirthDay = userViewModel.BirthDay; user.Email = userViewModel.Email; user.Description = userViewModel.PhoneNumber; user.Address = userViewModel.Address; user.Gender = userViewModel.Gender; user.Description = userViewModel.Description; user.Description = user.UserName; user.Avatar = string.IsNullOrWhiteSpace(userViewModel.Avatar) ? user.Avatar : userViewModel.Avatar; await _userService.UpdateUser(user); var res = await _userService.Save(); if (res) { return(RedirectToAction("Index", "Profile", new { profileId = IdentityHelper.CurrentUserId })); } } } else { return(View(userViewModel)); } return(RedirectToAction("Error", "Response", new { message = "Get profile failure" })); }
public async Task <ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return(View(model)); } var check = new CheckAccountViewModel() { Email = model.Email, PhoneNumber = model.Email, UserName = model.Email }; var user = await _userService.FindUserByEmailOrUserNameOrPhoneNumber(check); if (user == null) { ModelState.AddModelError(string.Empty, "User does not exist"); return(View(model)); } var result = await SignInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, shouldLockout : false); switch (result) { case SignInStatus.Success: return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe })); case SignInStatus.Failure: default: ModelState.AddModelError("", "Invalid login attempt."); return(View(model)); } }