示例#1
0
        public ActionResult Authenticate(SimpleLoginDto login)
        {
            try
            {
                var tipoCuenta = _tipoCuentaService.GetByCriteria(TipoCuentaCriteria.Create().EqualNombre(login.TipoCuenta));
                var user       = _service.GetByCriteria(UsuarioCriteria.Create().ByTelefono(login.Telefono));
                var cuentas    = _cuentaService.GetCollectionByCriteria(CuentaUsuarioCriteria.Create().ByIdUsuario(user.Id.Value));

                if (!cuentas.Any(item => item.IdTipoCuenta == tipoCuenta.Id && item.Password == StringHelper.GetSHA1(login.Password)))
                {
                    return(Unauthorized());
                }

                var token = JWTTokenGenerator.GenerateToken(login.Telefono);
                if (string.IsNullOrWhiteSpace(token))
                {
                    var error = new ValidationProblemDetails
                    {
                        Title  = "Error de autenticación",
                        Detail = "No se ha podido generar el token de autorización."
                    };
                    return(ValidationProblem(error));
                }

                return(Ok(new { token }));
            }catch
            {
                return(NoContent());
            }
        }
        public IActionResult GetByTelefono(string numero)
        {
            try
            {
                var usuario = _usuarioService.GetByCriteria(UsuarioCriteria.Create().ByTelefono(numero));
                if (usuario == null)
                {
                    return(NoContent());
                }

                var cuentas = _cuentaUsuarioService.GetCollectionByCriteria(CuentaUsuarioCriteria.Create().ByIdUsuario(usuario.Id.Value));
                if (cuentas == null)
                {
                    return(NoContent());
                }

                var tiposCuenta   = _tipoCuentaService.GetAll();
                var tipoConductor = tiposCuenta.FirstOrDefault(tc => tc.Nombre.Equals("cliente", StringComparison.InvariantCultureIgnoreCase));

                if (tipoConductor == null)
                {
                    return(NoContent());
                }

                var cuenta = cuentas.FirstOrDefault(c => c.IdTipoCuenta == tipoConductor.Id);
                if (cuenta == null)
                {
                    return(NoContent());
                }

                return(Ok(new { cuenta.Id }));
            }
            catch
            {
                return(NoContent());
            }
        }