public async Task <RegisterDTO> Handle(Command request, CancellationToken cancellationToken) { User newUser = new User() { UserName = request.UserName, DisplayName = request.DisplayName, Email = request.Email, JoinDate = DateTime.Now }; IdentityResult result = await _userManager.CreateAsync(newUser, request.Password); if (!result.Succeeded) { throw new RestException(HttpStatusCode.BadRequest, result.Errors); } result = await _userManager.AddToRoleAsync(newUser, "Member"); if (!result.Succeeded) { throw new RestException(HttpStatusCode.BadRequest, result.Errors); } return(new RegisterDTO { Token = await _security.GenerateLoginTokenAsync(newUser), AvatarUrl = newUser.AvatarUrl }); }
public async Task <LoginDTO> Handle(Query request, CancellationToken cancellationToken) { User user = await _userManager.FindByNameAsync(request.Username); if (user == null) { throw new RestException(HttpStatusCode.BadRequest, "Incorrect Username or Password"); } SignInResult result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false); if (!result.Succeeded) { throw new RestException(HttpStatusCode.BadRequest, "Incorrect Username or Password"); } // Log out all other sessions await _userManager.UpdateSecurityStampAsync(user); return(new LoginDTO { Token = await _security.GenerateLoginTokenAsync(user), AvatarUrl = user.AvatarUrl }); }