public JsonResult CriarUsuario(PocoUsuario poco) { ApiResposta resposta = new ApiResposta(); try { if (poco.ValidaEmail && poco.ValidaSenha) { Usuario usuario = new Usuario(); usuario.Poco = poco; var retorno = usuario.Autenticar(true); resposta.Retorno = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString(); resposta.Mensagem = usuario.Mensagem; resposta.Id = usuario.Id; } else { throw new Exception(ErroRequisicaoNegada); } } catch (Exception e) { resposta.Retorno = Retornos.falso.ToString(); resposta.Mensagem = "Criar usuário : " + e.Message; //se acontecer um erro, vou remover o controle de acesso para liberar uma proxima tentativa System.Web.HttpRuntime.Cache.Remove("CriarUsuario-" + Request.UserHostAddress); Util.LogError(e); } return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet)); }
public JsonResult Autenticar(PocoUsuario poco) { ApiResposta resposta = new ApiResposta(); try { if (poco.ValidaEmail && poco.ValidaSenha) { Usuario usuario = new Usuario(); usuario.Poco = poco; var retorno = usuario.Autenticar(); resposta.Retorno = (retorno ? Retornos.verdadeiro : Retornos.falso).ToString(); resposta.Mensagem = usuario.Mensagem; resposta.Id = usuario.Id; } else { throw new Exception(ErroRequisicaoNegada); } } catch (Exception e) { resposta.Retorno = Retornos.falso.ToString(); resposta.Mensagem = "Autenticar o usuário : " + e.Message; Util.LogError(e); } return(Json(resposta, "application/json", JsonRequestBehavior.AllowGet)); }
private bool Add(PocoUsuario usuario) { var sql = @" insert into Usuario (Nome,Email,Senha,DataHora) values (@pnome,@pemail,@psenha,Now()) "; param = new Dictionary <string, object>(); param.Add("pnome", usuario.Nome); param.Add("pemail", usuario.Email); param.Add("psenha", usuario.Senha); return(DB.Save(sql, param) > 0); }
internal bool Autenticar(bool cadastrar) { PocoUsuario usuarioExterno = Poco; PocoUsuario usuarioInterno = Get(usuarioExterno.Email); //Email está cadastrado na base if (usuarioInterno != null) { //Senhas iguais if (usuarioExterno.Senha == usuarioInterno.Senha) { //Usuário verificado if (usuarioInterno.Verificado == 1) { Id = usuarioInterno.Id; Mensagem = "Usuário verificado"; return(true); } //Usuário não verificado else { var hash = Util.GerarHashMd5(usuarioInterno.Email + usuarioInterno.Senha); var url = Util.Config("Api:Url") + "/ValidarAcesso?email=" + usuarioInterno.Email + "&hash=" + hash; var conteudo = "Olá " + usuarioInterno.Nome + ", para validar seu acesso no aplicativo, por favor, <a href='" + url + "' target='_blank'>clique aqui</a> ou copie e cole a URL (" + url + ") no browser"; Util.EnviaEmail(usuarioInterno.Email, "Validar acesso no aplicativo", conteudo); Mensagem = "Usuário não verificado, acesse sua conta de email [" + usuarioExterno.Email + "] e clique no link que enviamos, para validar o seu acesso"; return(false); } } //Senhas diferentes else { Mensagem = "A senha informada não é valida, verifique os dados e tente novamente"; return(false); } } //Usuário não existe else { //solicitação de cadastro de usuário if (cadastrar) { if (!usuarioExterno.ValidaNome) { Mensagem = "Informe o nome do usuário com 3 ou mais caracteres"; return(false); } if (!usuarioExterno.ValidaEmail) { Mensagem = "Email informado não é valido"; return(false); } var cadastrou = Add(usuarioExterno); if (cadastrou) { var hash = Util.GerarHashMd5(usuarioExterno.Email + usuarioExterno.Senha); var url = Util.Config("Api:Url") + "/ValidarAcesso?email=" + usuarioExterno.Email + "&hash=" + hash; var conteudo = "Olá " + usuarioExterno.Nome + ", seu cadastro foi realizado com sucesso. Para validar seu acesso no aplicativo, por favor, <a href='" + url + "' target='_blank'>clique aqui</a> ou copie e cole a URL (" + url + ") no browser"; Util.EnviaEmail(usuarioExterno.Email, "Cadastrado com sucesso. Confirme seu acesso.", conteudo); Mensagem = "Usuário cadastrado com sucesso, acesse sua conta de email [" + usuarioExterno.Email + "] e clique no link que enviamos, para validar o seu acesso"; } else { Mensagem = "Estranho!!! Não foi possivel cadastrar o usuário [" + usuarioExterno.Email + "]." + Util.Alerta; } return(false); } //tentou logar com usuário que não existe else { Mensagem = "Usuário informado não existe"; return(false); } } }