Exemple #1
0
        //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();
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        /// <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));
        }