public async Task <ObjectResult> Login([FromBody] LoginViewModel usuario) { ObjectDataResult <JWTToken> result = new ObjectDataResult <JWTToken>(); bool credenciaisValidas = false; if (usuario != null && !string.IsNullOrWhiteSpace(usuario.UserName)) { // Verifica a existência do usuário nas tabelas do // ASP.NET Core Identity var userIdentity = await _userManager .FindByNameAsync(usuario.UserName); if (userIdentity != null) { // Efetua o login com base no Id do usuário e sua senha SignInResult resultadoLogin = _signInManager .CheckPasswordSignInAsync(userIdentity, usuario.Password, false) .Result; credenciaisValidas = resultadoLogin.Succeeded; } } if (credenciaisValidas) { result.Success = true; result.Data = _accountManagement.GenerateToken(usuario.UserName); } else { result.Success = false; result.Message = "invalid credentials"; } return(result); }
public async Task <ObjectResult> UpdatePwd(string userName, UpdatePasswordViewModel userToUpdate) { ObjectDataResult <IdentityResult> result = new ObjectDataResult <IdentityResult>(); ApplicationUser user = await _userManager.FindByNameAsync(userName); IdentityResult idRes = await _userManager.ChangePasswordAsync(user, userToUpdate.OldPassword, userToUpdate.NewPassword); result.Success = idRes.Succeeded; result.Message = idRes.Errors.Select(x => x.Description).FirstOrDefault(); result.Data = idRes.Succeeded ? idRes : null; return(result); }
public async Task <ObjectResult> CreateUser( ApplicationUser user, string password) { ObjectDataResult <IdentityResult> result = new ObjectDataResult <IdentityResult>(); try { if (_userManager.FindByNameAsync(user.UserName).Result == null) { var resultado = await _userManager .CreateAsync(user, password); if (resultado.Succeeded) { IdentityResult x = await _userManager.AddToRoleAsync(user, Roles.BASE_ROLE); result.Success = x.Succeeded; if (x.Succeeded) { result.Data = resultado; } else { result.Message = x.Errors.Select(x => x.Description).FirstOrDefault(); } } else { result.Success = resultado.Succeeded; result.Message = resultado.Errors.Select(x => x.Description).FirstOrDefault(); } } result.Success = false; result.Message = "user already exists"; } catch (Exception e) { result.Success = false; result.Message = e.Message; } return(result); }
public async Task TestChangePassword(string userName) { await CreateUser(userName); var request = new HttpRequestMessage(new HttpMethod("POST"), "/api/Account/Login"); LoginViewModel userLogin = new LoginViewModel { UserName = userName, Password = "******" }; request.Content = new StringContent(JsonConvert.SerializeObject(userLogin), Encoding.UTF8, "application/json"); var response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); ObjectDataResult <JWTToken> result = JsonConvert.DeserializeObject <ObjectDataResult <JWTToken> >(response.Content.ReadAsStringAsync().Result); var request2 = new HttpRequestMessage(new HttpMethod("POST"), "/api/Account/ChangePassword"); UpdatePasswordViewModel pwdUpdate = new UpdatePasswordViewModel { OldPassword = "******", NewPassword = "******" }; request2.Content = new StringContent(JsonConvert.SerializeObject(pwdUpdate), Encoding.UTF8, "application/json"); request2.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", $"{result.Data.AccessToken}"); response = await _client.SendAsync(request2); response.EnsureSuccessStatusCode(); ObjectResult changePwdResult = JsonConvert.DeserializeObject <ObjectResult>(response.Content.ReadAsStringAsync().Result); Assert.True(changePwdResult.Success); }
public async Task <ObjectResult> DeleteUser(string userName) { ObjectDataResult <IdentityResult> result = new ObjectDataResult <IdentityResult>(); ApplicationUser user = await _userManager.FindByNameAsync(userName); if (user == null) { result.Success = false; result.Message = "user not found"; return(result); } IdentityResult wasDeleted = await _userManager.DeleteAsync(user); result.Success = wasDeleted.Succeeded; result.Message = wasDeleted.Errors.Select(x => x.Description).FirstOrDefault(); result.Data = wasDeleted.Succeeded ? wasDeleted : null; return(result); }