Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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" }));
        }
Exemplo n.º 9
0
        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));
            }
        }