public UsuarioLoginResponse Autenticar(UsuarioLoginRequest request) { if (request is null) { AddNotification("Autenticar", Messages_PT_BR.OBJETO_X0_E_OBRIGATORIO.ToFormat("LoginRequest")); } if (IsInvalid()) { return(null); } var email = new Email(request.Email); _usuario = new Usuario(); _usuario.Autenticar(email, request.Senha); AddNotifications(_usuario, email); if (IsInvalid()) { return(null); } _usuario = _repositoryUsuario.ObterPor(item => item.Email.Endereco == _usuario.Email.Endereco && item.Senha == _usuario.Senha, include => include.Perfil); if (_usuario is null) { AddNotification("Autenticar", Messages_PT_BR.DADOS_NAO_ENCONTRADOS); return(null); } return((UsuarioLoginResponse)_usuario); }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { try { IServiceUsuario serviceUsuario = _container.Resolve <IServiceUsuario>(); var request = new UsuarioLoginRequest(); request.Email = context.UserName; request.Senha = context.Password; UsuarioLoginResponse response = serviceUsuario.Autenticar(request); if ((serviceUsuario.IsInvalid()) || (response == null)) { context.SetError("invalid_grant", "Usuário não encontrado."); serviceUsuario.ClearNotifications(); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim(ClaimTypes.Name, response.Nome)); identity.AddClaim(new Claim(ClaimTypes.Role, response.Perfil)); var roles = new List <string>(); roles.Add(response.Perfil); var principal = new GenericPrincipal(identity, roles.ToArray()); Thread.CurrentPrincipal = principal; context.Validated(identity); } catch (Exception ex) { context.SetError("invalid_grant", ex.Message); return; } }
// [AllowAnonymous] public IActionResult Validate([FromBody] UsuarioLoginRequest request) { Usuario user = _usuarioServices.RecuperarPorLogin(request.login); // Mala practica, poner solo un mensaje para ambos casos if (user == null) { return(BadRequest("El usuario no existe")); } if (EncriptaHelper.Decrypt(user.clave) != request.clave) { return(BadRequest("La clave no coincide")); } #region Token // Generar las claims Claim[] claims = new[] { new Claim("codigo", user.idtipousuario.ToString()), new Claim("login", user.login) }; // Generar SigningCredentials SymmetricSecurityKey key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("PalabraSecreta123")); SigningCredentials sec = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); JwtSecurityToken token = new JwtSecurityToken( issuer: "yourdomain.com", audience: "yourdomain.com", claims: claims, expires: DateTime.Now.AddMinutes(10), signingCredentials: sec ); string texto = new JwtSecurityTokenHandler().WriteToken(token); #endregion UsuarioLoginResponse response = new UsuarioLoginResponse { idusuario = user.idusuario, rutaimagen = user.rutaimagen, token = texto }; return(Ok(response)); }
public ResponsePadrao Post([FromBody] UsuarioLoginRequest value) { return(UsuarioRepository.Login(value.Login, value.Senha)); }
public UsuarioLoginResponse Login(UsuarioLoginRequest request) { throw new NotImplementedException(); }