public dynamic Login(string username, string password, string deviceid) { try { if (username.IsNullOrEmpty() || password.IsNullOrEmpty() || deviceid.IsNullOrEmpty()) { return(new { result = -1, message = "内部错误" }); } var user = context.UserInfo.Where(x => (x.EmployeeID == username && x.Password == password) || (x.MobilephoneNumber == username && x.Password == password)).FirstOrDefault(); var result = user != null; if (!result) { return(new { result = -2, message = "用户名或密码错误" }); } else { var token = TokenHelper.BuildToken(deviceid); user.Token = token; context.SaveChanges(); return(new { result = 1, token = token }); } } catch { return(new { result = -1, message = "内部错误" }); } }
public IActionResult Authenticate([FromBody] LoginModel login) { IActionResult response = Unauthorized(); PublicUser user = _logInMetier.Authenticate(login); if (user != null) { var tokenString = _tokenHelper.BuildToken(user); var cpt = _context.CompteContact.Select(t => t.IdCptNavigation).Where(p => p.MainContactId == user.Contact.Id).FirstOrDefault(); response = Ok(new { token = tokenString, Utilisateur = user, compte = cpt }); } return(response); }
public async Task <IActionResult> Authenticate([FromBody] UserLoginDTO request) { try { var user = await _userManager.FindByNameAsync(request.UserName); if (user == null) { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Erro na Autenticação do Usuário") { Errors = new List <string>() { "Usuário não reconhecido pela aplicação" } })); } if (user.Ativo) { var result = await _signInManager.PasswordSignInAsync(user, request.Senha, isPersistent : false, lockoutOnFailure : true); if (!result.IsLockedOut) { if (result.Succeeded) { var roles = await _userManager.GetRolesAsync(user); user.Logado = true; user.DataUltimoLogin = DateTime.Now; await _userManager.UpdateAsync(user); var userAutentication = new UserAutenticationDTO(); if (user.ForcaTrocaSenha) { userAutentication.UserName = user.UserName; userAutentication.DataLogin = user.DataUltimoLogin; userAutentication.Autenticated = false; userAutentication.ForcaTrocaSenha = user.ForcaTrocaSenha; } else { var buildToken = TokenHelper.BuildToken(user, roles.ToList(), _appSettings.Auth.JWTSecret, _appSettings.Auth.Expiration); userAutentication.UserName = user.UserName; userAutentication.DataLogin = user.DataUltimoLogin; userAutentication.Token = buildToken; userAutentication.Autenticated = true; userAutentication.ForcaTrocaSenha = user.ForcaTrocaSenha; } return(Ok(new ApiResponseSuccess <UserAutenticationDTO>(userAutentication, "Usuário Autenticado com sucesso!"))); } else { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Erro na Autenticação do Usuário") { Errors = new List <string>() { "Usuário ou Senha Inválidos" } })); } } else { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Erro na Autenticação do Usuário") { Errors = new List <string>() { "Usuário bloqueado por excesso de tentativas (Aguarde 30 Minutos para Tentar Novamente)" } })); } } else { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Erro na Autenticação do Usuário") { Errors = new List <string>() { "Usuário Desativado, entre em contato com o Administrador para ativação do usuário" } })); } } catch (Exception ex) { _logger.LogError("Erro ao Autenticar {message}", ex.Message); return(NotFound(new ApiResponseError(HttpStatusCode.NotFound, "Erro na Autenticação do Usuário") { Errors = new List <string>() { $"Erro ao Autenticar" } })); } }
public async Task <IActionResult> UpdatePassword([FromBody] UserRedefinicaoSenhaDTO request) { try { var user = await _userManager.FindByNameAsync(request.UserName); if (user != null) { var validarNovaSenha = _passwordValidator.ValidateAsync(_userManager, user, request.NovaSenha); if (!validarNovaSenha.Result.Succeeded) { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Erro na Modificação da Senha") { Errors = validarNovaSenha.Result.Errors.Select(p => p.Description).ToList() })); } var autenticado = await _signInManager.PasswordSignInAsync(user, request.SenhaAtual, isPersistent : false, lockoutOnFailure : false); if (!autenticado.Succeeded) { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Usuário ou Senha Inválidos") { Errors = new List <string>() { "Usuário ou Senha Inválidos" } })); } var verificarUltimasSenhas = _usuarioSenhaHistoryService.UltimasSenhas(user.Id, _appSettings.Auth.QtdSenhasVerificar); foreach (var item in verificarUltimasSenhas) { var igualUltimasTres = _passwordHasher.VerifyHashedPassword(null, item.PasswordHash, request.NovaSenha); if (igualUltimasTres == PasswordVerificationResult.Success) { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Senha não pode ser igual as últimas 3 Senhas válidas") { Errors = new List <string>() { "Senha não pode ser igual as últimas 3 Senhas válidas" } })); } } var hashPass = _passwordHasher.HashPassword(user, request.NovaSenha); await _userManager.RemovePasswordAsync(user); var result = await _userManager.AddPasswordAsync(user, hashPass); if (result.Succeeded) { user.DataUltimaTrocaSenha = DateTime.Now; user.FirstLogin = false; user.ForcaTrocaSenha = false; user.Logado = true; user.DataUltimoLogin = DateTime.Now; user.PasswordHash = hashPass; await _userManager.UpdateAsync(user); var usuarioSenhaHistory = new UsuarioSenhaHistory() { UsuarioId = user.Id, DataCriacao = DateTime.Now, PasswordHash = user.PasswordHash }; _usuarioSenhaHistoryService.Add(usuarioSenhaHistory); var roles = await _userManager.GetRolesAsync(user); var buildToken = TokenHelper.BuildToken(user, roles.ToList(), _appSettings.Auth.JWTSecret, _appSettings.Auth.Expiration); var userAutentication = new UserAutenticationDTO() { UserName = user.UserName, DataLogin = user.DataUltimoLogin, Token = buildToken, Autenticated = true, ForcaTrocaSenha = false }; return(Ok(new ApiResponseSuccess <UserAutenticationDTO>(userAutentication, "Senha Redefina com Sucesso!"))); } else { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Erro na Modificação da Senha") { Errors = result.Errors.Select(p => p.Description).ToList() })); } } else { return(BadRequest(new ApiResponseError(HttpStatusCode.BadRequest, "Usuário ou Senha Inválidos") { Errors = new List <string>() { "Usuário ou Senha Inválidos" } })); } } catch (Exception ex) { _logger.LogError("Erro ao Modificar a Senha {message}", ex.Message); return(NotFound(new ApiResponseError(HttpStatusCode.NotFound, "Erro na Troca de Senha") { Errors = new List <string>() { $"Erro ao tentar Trocar a Senha" } })); } }