public UsuarioLogado Post([FromBody]Usuario usuario) { UsuarioLogado usuarioLogado = new UsuarioLogado(); try { string ipMaquina = string.Empty; string nomeMaquina = string.Empty; string email = null; string senha = null; if (usuario != null) { if (!string.IsNullOrEmpty(usuario.Email)) email = usuario.Email; if (!string.IsNullOrEmpty(usuario.Senha)) senha = usuario.Senha; } nomeMaquina = Dns.GetHostName(); //IPAddress[] ip = Dns.GetHostAddresses(nomeMaquina); //ipMaquina = ip[1].ToString(); ipMaquina = "127.0.0.1"; usuarioLogado = biz.EfetuaLoginSistema(email, senha, ipMaquina, nomeMaquina); if (!biz.IsValid()) throw new InvalidDataException(); GravaLog(EnumTipoAcao.Login.ToString(), email); } catch (InvalidDataException) { GeraErro(HttpStatusCode.InternalServerError, biz.serviceResult); } catch (UnauthorizedAccessException) { GeraErro(HttpStatusCode.Forbidden, biz.serviceResult); } catch (Exception ex) { GeraErro(HttpStatusCode.BadRequest, ex); } return usuarioLogado; }
public UsuarioLogado EfetuaLoginSistema(string email, string senha, string ip, string nomeMaquina) { LimpaValidacao(); if (string.IsNullOrEmpty(email)) IncluiErroBusiness("Usuario_Email"); if (string.IsNullOrEmpty(senha)) IncluiErroBusiness("Usuario_Senha"); UsuarioLogado retorno = null; if (IsValid()) { UsuarioBusiness bizUsuario = new UsuarioBusiness(); Usuario itemBase = bizUsuario.RetornaUsuario_Email(email); if (itemBase == null) IncluiErroBusiness("Usuario_EmailInvalido"); if (IsValid() && !PasswordHash.ValidatePassword(senha, itemBase.Senha)) IncluiErroBusiness("Usuario_SenhaInvalida"); if (IsValid()) { retorno = new UsuarioLogado(); retorno.Id = itemBase.Id.Value; retorno.DataHoraAcesso = DateTime.Now; retorno.Email = itemBase.Email; retorno.Nome = itemBase.Nome; retorno.WorkstationId = nomeMaquina; PerfilUsuarioBusiness bizPerfilUsuario = new PerfilUsuarioBusiness(); IList<string> listFuncionalidade = bizPerfilUsuario.RetornaFuncionalidades_UsuarioId((int)itemBase.Id); retorno.Token = GeraToken(email, string.Join(",", listFuncionalidade)); } } return retorno; }