Esempio n. 1
0
        public async Task Invoke(HttpContext context, FarmAppContext farmAppContext, ILoggerDb loggerDb)
        {
            var originalBody = context.Response.Body;
            var responseBody = new MemoryStream();

            context.Response.Body = responseBody;
            context.Request.EnableBuffering();

            Log log = new Log();

            if (int.TryParse(context.User.Claims?.FirstOrDefault(c => c.Type == "UserId")?.Value, out var userId))
            {
                log.UserId = userId;
            }
            if (int.TryParse(context.User.Claims?.FirstOrDefault(c => c.Type == "RoleId")?.Value, out var roleId))
            {
                log.RoleId = roleId;
            }

            try
            {
                log = await GetLogAsync(context, context.Request.Headers, context.Request.Body, log);

                loggerDb.WriteRequest(log);

                if (await HandleErrorAutorizationAsync(context, farmAppContext, log))
                {
                    await _next.Invoke(context);
                }
            }
            catch (Exception ex)
            {
                log.Exception = ex.ToString();
                await HandleExceptionAsync(context, ex);
            }
            finally
            {
                log = await GetLogAsync(context, context.Response.Headers, context.Response.Body, log);

                loggerDb.WriteResponse(log);
                await responseBody.CopyToAsync(originalBody);

                responseBody.Dispose();
            }
        }
Esempio n. 2
0
        private async Task <bool> HandleErrorAutorizationAsync(HttpContext context, FarmAppContext farmAppContext, Log log)
        {
            var method = await farmAppContext.ApiMethodRoles.Include(i => i.ApiMethod).Where(x => x.ApiMethod.HttpMethod == log.HttpMethod &&
                                                                                             x.ApiMethod.PathUrl == log.PathUrl).AsNoTracking().ToListAsync();

            if (!method.Any())
            {
                await WriteStatusAndBody(context, 404, "Метод не найден!");

                return(false);
            }
            if (method.Any(x => x.ApiMethod.IsNeedAuthentication == true))
            {
                if (method.FirstOrDefault(x => x.RoleId == log.RoleId)?.IsDeleted ?? true == true)
                {
                    await WriteStatusAndBody(context, 403, "Доступ запрещен!");

                    return(false);
                }
            }

            return(true);
        }
Esempio n. 3
0
        public void Configure(IApplicationBuilder app, FarmAppContext farmAppContext)
        {
            app.UseDeveloperExceptionPage();

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("./v1/swagger.json", "FarmApp V1");
            });

            app.UseHttpsRedirection();
            app.UseRouting();

            app.UseCookiePolicy(new CookiePolicyOptions
            {
                MinimumSameSitePolicy = SameSiteMode.Strict,
                HttpOnly = HttpOnlyPolicy.Always,
                Secure   = CookieSecurePolicy.Always
            });

            app.UseDefaultFiles();
            app.UseStaticFiles();
            app.UseAuthentication();
            app.UseAuthorization();

            app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());

            app.UseMiddleware <ErrorHandlingMiddleware>();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            farmAppContext.Database.Migrate();
        }
Esempio n. 4
0
 public VendorsController(FarmAppContext farmAppContext, IMapper mapper)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
 }
Esempio n. 5
0
 public PharmaciesController(FarmAppContext farmAppContext, IMapper mapper)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
 }
 public DosageFormsController(FarmAppContext farmAppContext, IMapper mapper)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
 }
Esempio n. 7
0
 public RegionTypesController(FarmAppContext farmAppContext, IMapper mapper)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
 }
 public ApiMethodsController(FarmAppContext farmAppContext, IMapper mapper)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
 }
Esempio n. 9
0
 public UsersController(FarmAppContext farmAppContext, IMapper mapper, IOptions <AppSettings> appSettings)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
     _appSettings    = appSettings.Value;
 }
Esempio n. 10
0
 public RoleController(FarmAppContext farmAppContext)
 {
     _farmAppContext = farmAppContext;
 }
Esempio n. 11
0
 public ChartsController(FarmAppContext farmAppContext)
 {
     _farmAppContext = farmAppContext;
 }
Esempio n. 12
0
 public StocksController(FarmAppContext farmAppContext, IMapper mapper)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
 }
Esempio n. 13
0
 public UserController(FarmAppContext farmAppContext)
 {
     _farmAppContext = farmAppContext;
 }
 public CodeAthTypesController(FarmAppContext farmAppContext, IMapper mapper)
 {
     _farmAppContext = farmAppContext;
     _mapper         = mapper;
 }
Esempio n. 15
0
 public LoggerDb(FarmAppContext farmAppContext)
 {
     _farmAppContext = farmAppContext;
 }