//Validasyonlar ne işimize yarar=>Güvenlik içindir.Error mesajlarımızı iletir.Hepsini bir noktadan yürütmek için Custom bir fileextension oluşturduk onlara uymasını istedik. public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { if (!context.ModelState.IsValid)//ModelState.IsValid durumunu burada handle edicez.modele uygun değilse { //yani bir error varsa. var errorInModelState = context.ModelState .Where(x => x.Value.Errors.Count > 0) .ToDictionary(x => x.Key, y => y.Value.Errors.Select(z => z.ErrorMessage)).ToArray(); ErrorResponce errorResponce = new ErrorResponce(); foreach (var error in errorInModelState) //birinci adımdayken { foreach (var subError in error.Value) //bu bütün errorler için dönecek. { ErrorModel errorModel = new ErrorModel { FielName = error.Key, Message = subError }; //Birinci tur bittiğinde buraya uğrayacak. errorResponce.Errors.Add(errorModel); } } context.Result = new BadRequestObjectResult(errorResponce);//yarattık doldurduk errorResponce döndürdük. } await next(); }
public override void OnException(ExceptionContext context) { var r = new ErrorResponce { ErrorCode = ErrorCode.ServerError }; var code = HttpStatusCode.InternalServerError; _logger.Error(context.Exception); if (context.Exception is InvalidDataException) { r.ErrorCode = ErrorCode.BadRequestParams; code = HttpStatusCode.BadRequest; } else if (context.Exception is Microsoft.Data.Sqlite.SqliteException) { r.ErrorCode = ErrorCode.ServerError; code = HttpStatusCode.InternalServerError; } context.HttpContext.Response.StatusCode = (int)code; context.Result = new JsonResult(r); base.OnException(context); }
/// <summary> /// Add errors for model state and return isValid. /// </summary> /// <param name="modelState"></param> /// <param name="responce"></param> /// <returns></returns> public static bool CheckErrors(this ModelStateDictionary modelState, ErrorResponce responce) { foreach (string message in responce.Errors) { modelState.AddModelError("", message); } return(modelState.IsValid == false); }
public async Task <IActionResult> RegisterAsync([FromForm] RegistrationCommand registerRequest) { if (ModelState.IsValid) { // Getting object that contain errors about login user data. ErrorResponce registerResponce = await _mediator.Send(registerRequest); if (ModelState.CheckErrors(registerResponce) == false) { return(RedirectToRoute("user", new { userName = registerRequest.UserName })); } } return(View(registerRequest)); }
public async Task <IActionResult> LoginAsync([FromForm] LoginQuery loginRequest) { if (ModelState.IsValid) { // Getting object that contain errors about login user data. ErrorResponce loginResponce = await _mediator.Send(loginRequest); if (ModelState.CheckErrors(loginResponce) == false) { return(RedirectToAction(nameof(Index))); } } return(View(loginRequest)); }
/// <summary> /// Transfer responsibility of google login. /// </summary> /// <returns> /// If google login is successful then redirect to method Index /// else return login view with errors. /// </returns> public async Task <IActionResult> GoogleLogin() { var request = new HandlerData <Unit, ErrorResponce> { Data = Unit.Value }; // Getting object that contain errors about login user data. ErrorResponce responce = await _mediator.Send(request); if (ModelState.CheckErrors(responce) == false) { return(RedirectToAction(nameof(Index))); } else { return(RedirectToAction(nameof(Login))); } }
public async Task <IActionResult> Comment([FromForm] CommentFormData formData, [FromRoute] ProjectRoute route) { if (ModelState.IsValid) { //Getting field _project based on route. await Init(route); var request = new ProjectHandlerData <(string UserName, CommentFormData FormData), ErrorResponce> { Data = (User.Identity.Name, formData), Project = _project, }; // Getting object that contain errors about login user data. ErrorResponce responce = await _mediator.Send(request); // Checking errors if exist then add them to modelstate. ModelState.CheckErrors(responce); } return(RedirectToAction(nameof(Show), route)); }
public async Task <IActionResult> AddProject([FromRoute] UserRoute route, [FromForm] SnapshotFormData formData) { if (ModelState.IsValid) { // Getting field _user based on route. await Init(route); var request = new UserHandlerData <SnapshotFormData, ErrorResponce> { User = _user, Data = formData }; // Getting object that contain errors about login user data. ErrorResponce responce = await _mediator.Send(request); // Checking errors if exist then add them to modelstate. ModelState.CheckErrors(responce); } return(RedirectToRoute("Projects", route)); }