private Task HandleExceptionAsync(HttpContext context, Exception exception) { context.Response.ContentType = "application/json"; context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; _resultService.AddValue(Resultado.Error, exception.Message + " " + exception.GetType()); return(context.Response.WriteAsync(_resultService.GetJsonProperties())); }
private async Task <bool> FormatResult(HttpContext context) { if (context.Response.StatusCode == (int)HttpStatusCode.Unauthorized && context.Response.ContentType.IsNull()) { context.Response.ContentType = "application/json"; _resultService.AddValue(Resultado.Error, "Acceso al sistema no autorizado."); await context.Response.WriteAsync(_resultService.GetJsonProperties()).ConfigureAwait(true); return(false); } return(true); }
private async Task <bool> ValidaUsuarioAsync(HttpContext context) { string codUsuario = context.GetUniqueName(); //IUsuarioService userService = context.RequestServices.GetRequiredService<IUsuarioService>(); // Determinar si existe el usuario. if (!string.IsNullOrEmpty(codUsuario) && !await _userService.ExisteUsuario(codUsuario).ConfigureAwait(true)) { context.Response.ContentType = "application/json"; context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; _resultService.AddValue(Resultado.Error, "El usuario con el que intenta acceder no existe en el sistema."); await context.Response.WriteAsync(_resultService.GetJsonProperties()).ConfigureAwait(true); return(false); } // Realizar demás validaciones de usuario activo, usuario borrado y cantidad de conexiones. return(true); }
public async Task <Dictionary <string, object> > CrearUsuario(UsuarioDto usuarioNuevo) { httpStatusCode = HttpStatusCode.OK; resultado = Resultado.Success; mensaje = ""; Usuario usuario = null; if (!usuarioNuevo.IsNull()) { if (await ValidaNuevo(usuarioNuevo).ConfigureAwait(true)) { if (usuarioNuevo.Contrasena.BuildHashString(out byte[] contrhash, out byte[] contrsalt, out mensaje)) { // Mapear datos de DTO al modelo. usuario = usuarioNuevo.Map <Usuario>(); // Obtener fecha de registro. usuario.FechaRegist = DateTime.Now; // Inicializar la contraseña con Hash y el Salt. usuario.ContrasHash = contrhash; usuario.ContrasSalt = contrsalt; // Generar nuevo código de opción. string maxcod = await _repoWrapper.Usuario.MaxIdAsync(); string newcod = (int.Parse(maxcod, CultureInfo.InvariantCulture) + 1).ToString().Trim().PadLeft(15, '0'); usuario.CodUsuario = newcod; // Buscar en parámetros generales el código de tipo de cambio que corresponde a activación de cuenta. ParamGenUsu paramGenUsu = await _repoWrapper.ParamGenUsu.GetParamGenUsuAsync(); // Incicializar datos para la solicitud de activación de cuenta. _ = CreaCambioRestringido(usuario, paramGenUsu.CodActiCuenta, out string randomCode); // Salvar datos de usuario. _repoWrapper.Usuario.Create(usuario); if (await _repoWrapper.SaveAsync() > 0) { // Enviar correo para activar cuenta. EnviarCorreo(usuario, randomCode, 1); mensaje = "Usuario creado con éxito."; } else { usuario = null; httpStatusCode = HttpStatusCode.InternalServerError; resultado = Resultado.Error; mensaje = "Inconsistencia al salvar usuario."; } } else { usuario = null; httpStatusCode = HttpStatusCode.BadRequest; resultado = Resultado.Error; } } } else { usuario = null; httpStatusCode = HttpStatusCode.BadRequest; resultado = Resultado.Error; mensaje = "Datos de usuario incorrectos."; } _resultService.AddValue("StatusCode", httpStatusCode); _resultService.AddValue(resultado, mensaje); if (resultado == Resultado.Success) { usuarioNuevo = usuario.Map <UsuarioDto>(); _resultService.AddValue("usuario", usuarioNuevo); } return(_resultService.GetProperties()); }
private void FormatResult(ActionExecutedContext filterContext, ObjectResult objectResult) { if (objectResult.Value is Dictionary <string, object> valorResult) { if (valorResult.ContainsKey("StatusCode")) { switch (valorResult["StatusCode"]) { case HttpStatusCode.OK: { filterContext.Result = new OkObjectResult(objectResult.Value); break; } case HttpStatusCode.BadRequest: { filterContext.Result = new BadRequestObjectResult(objectResult.Value); break; } case HttpStatusCode.NotFound: { filterContext.Result = new NotFoundObjectResult(objectResult.Value); break; } case HttpStatusCode.NoContent: { filterContext.Result = new NoContentResult(); break; } case HttpStatusCode.PreconditionRequired: { filterContext.Result = new PreconditionRequiredObjectResult(objectResult.Value); break; } case HttpStatusCode.InternalServerError: { filterContext.Result = new InternalServerErrorObjectResult(objectResult.Value); break; } case HttpStatusCode.Unauthorized: { filterContext.Result = new UnauthorizedObjectResult(objectResult.Value); break; } default: { filterContext.Result = new BadRequestObjectResult(objectResult.Value); break; } } valorResult.Remove("StatusCode"); } else { _resultService.AddValue(Resultado.Error, "No se encuentra el código de estado de respuesta."); filterContext.Result = new BadRequestObjectResult(_resultService.GetProperties()); } } }