Beispiel #1
0
        public async Task <ActionResult> Register(UserRegisterForm registerViewModels)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View());
                }
                else
                {
                    IdentityResultTHP infor = await this._identityService.Register(registerViewModels);

                    if (infor.IsErrors)
                    {
                        foreach (var error in infor.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error);
                        }
                        return(View());
                    }
                    else
                    {
                        return(RedirectToAction(nameof(Login)));
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IdentityResultTHP> Login(string username, string password)
        {
            IdentityResultTHP result = new IdentityResultTHP();

            try
            {
                User user = await _userService.FindAsync(username, password);

                if (user == null)
                {
                    result.Errors.Add("Tên đăng nhập hoặc mật khẩu không đúng");
                }
                else
                {
                    ClaimsIdentity claimsIdentity = await _userService.CreateIdentityAsync(user,
                                                                                           DefaultAuthenticationTypes.ApplicationCookie);

                    result.Data = claimsIdentity;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }
        public async Task <IdentityResultTHP> Register(UserRegisterForm user, params string[] roles)
        {
            IdentityResultTHP result = new IdentityResultTHP();

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
                                                                 TransactionScopeAsyncFlowOption.Enabled))
            {
                try
                {
                    IdentityResult createUser = await _userService.CreateAsync(new User {
                        UserName    = user.Username,
                        PhoneNumber = user.Phone,
                        Address     = user.Address,
                        FullName    = user.FullName,
                        DateOfBirth = user.DateOfBirth
                    }, user.Password);

                    if (!createUser.Succeeded)
                    {
                        result.Errors.AddRange(createUser.Errors);
                    }
                    else
                    {
                        foreach (var roleName in roles)
                        {
                            if (!_roleService.RoleExists(roleName))
                            {
                                IdentityResult createRole = await this._roleService.CreateAsync(new Role { Name = roleName });

                                if (!createRole.Succeeded)
                                {
                                    result.Errors.AddRange(createRole.Errors);
                                }
                            }

                            User currentUser = await _userService.FindByNameAsync(user.Username);

                            if (!_userService.IsInRole(currentUser.Id, roleName))
                            {
                                await _userService.AddToRoleAsync(currentUser.Id, roleName);
                            }
                        }
                        scope.Complete();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            return(result);
        }
        public async Task <IdentityResultTHP> ChangePassword(string userId, string currentPassword, string newPassword)
        {
            IdentityResultTHP result = new IdentityResultTHP();

            var user = await this._userService.ChangePasswordAsync(userId, currentPassword, newPassword);

            if (!user.Succeeded)
            {
                result.Errors.AddRange(user.Errors);
            }

            return(result);
        }
Beispiel #5
0
        public async Task <ActionResult> Login(LoginViewModel user, string returnUrl)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    IdentityResultTHP result = await _identityService.Login(user.Username, user.Password);

                    if (result.IsErrors)
                    {
                        foreach (var ele in result.Errors)
                        {
                            ModelState.AddModelError(string.Empty, ele);
                        }
                    }
                    else
                    {
                        ClaimsIdentity claimsIdentity = result.Data as ClaimsIdentity;
                        CurrentAuthenticationManager.SignOut();
                        CurrentAuthenticationManager.SignIn(new AuthenticationProperties()
                        {
                            IsPersistent = user.RememberMe,
                        }, claimsIdentity);
                        if (string.IsNullOrEmpty(returnUrl))
                        {
                            return(RedirectToAction("ProfileDetails", "Profile"));
                        }
                        else
                        {
                            return(Redirect(returnUrl));
                        }
                    }
                }
                else
                {
                    ViewBag.ReturnUrl = returnUrl;
                    return(View());
                }
            }
            catch (Exception)
            {
                throw;
            }
            ViewBag.ReturnUrl = returnUrl;
            return(View());
        }