private async Task <IActionResult> GetToken(TokenRequestViewModel viewModel) { var user = await _userAndRoleRepository.GetUserByNameAsync(viewModel.Username); if (user == null && viewModel.Username.Contains("@")) { user = await _userAndRoleRepository.GetUserByEmailAsync(viewModel.Username); } if (user == null || !await _userAndRoleRepository.CheckPasswordAsync(user, viewModel.Password)) { return(new UnauthorizedResult()); } var token = _tokenService.GenerateRefreshToken(viewModel.ClientId, user.Id); await _tokenRepository.AddRefreshToken(token); var accessTokenData = _tokenService.CreateAccessToken(user.Id); var response = new TokenResponseViewModel { Token = accessTokenData.EncodedToken, Expiration = accessTokenData.ExporationTimeInMinutes, RefreshToken = token.Value }; return(Json(response)); }
public async Task <IActionResult> Post([FromBody] UserViewModel viewModel) { if (viewModel == null) { return(new BadRequestResult()); } try { ApplicationUser user = await _userAndRoleRepository.GetUserByNameAsync(viewModel.UserName); if (user != null) { return(BadRequest("User with given username already exists")); } user = await _userAndRoleRepository.GetUserByEmailAsync(viewModel.Email); if (user != null) { return(BadRequest("User with given e-mail already exists")); } var createdUser = await _userAndRoleRepository.CreateUserAndAddToRolesAsync( viewModel.Adapt <ApplicationUser>(), new[] { UserRoles.RegisteredUser }); return(Json(createdUser.Adapt <UserViewModel>(), JsonSettings)); } catch (Exception e) { return(new StatusCodeResult(500)); } }