public async Task <ActionResult> Login(LoginViewModel account, string returnUrl) { if (ModelState.IsValid) { DtoApplicationUser user = new DtoApplicationUser { Email = account.Username, Password = account.Password }; ClaimsIdentity claim = await _userService.Authenticate(user); if (claim == null) { ModelState.AddModelError("", "Неверный логин или пароль."); } else { _authenticationManager.SignOut(); _authenticationManager.SignIn(new AuthenticationProperties { IsPersistent = account.Persistent, }, claim); return(RedirectToAction("Index", "Request")); } } return(View(account)); }
/// <summary> /// Реализует асинхронное добавление новой учётной записи пользователя. /// </summary> public async Task <OperationResult> CreateAsync(DtoApplicationUser userDto) { ApplicationUser user = await _toolset.UserManager.FindByEmailAsync(userDto.Email); if (user == null) { user = new ApplicationUser { Email = userDto.Email, UserName = userDto.Email }; var result = await _toolset.UserManager.CreateAsync(user, userDto.Password); if (result.Errors.Count() > 0) { return(new OperationResult(false, result.Errors.FirstOrDefault(), "")); } await _toolset.SaveChangesAsync(); return(new OperationResult(true, "Учетная запись пользователя успешно добавлена.", "")); } else { return(new OperationResult(false, "Пользователь с таким E-mail уже существует!", "")); } }
/// <summary> /// Реализует асинхронную аутентификацию пользователя в системе. /// </summary> public async Task <ClaimsIdentity> Authenticate(DtoApplicationUser userDto) { ClaimsIdentity claim = null; ApplicationUser user = await _toolset.UserManager.FindAsync(userDto.Email, userDto.Password); if (user != null) { claim = await _toolset.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); } return(claim); }