public static bool Exists(this HttpContext HttpContext, PortableRecipesContext _context) { if (HttpContext.Request.Cookies.ContainsKey("PortableRecipesContext")) { var old_cookie = HttpContext.Request.Cookies["PortableRecipesContext"]; var old_session = _context.Session.FirstOrDefault(s => s.CookieName == old_cookie); return(old_session != null); } return(false); }
public static void Deleted <U>(this HttpContext HttpContext, PortableRecipesContext _context, string entity_name, U entity) where U : IEntity { var now = DateTime.Now; _context.Session.RemoveRange( from s in _context.Session where (s.LoggedEntityId == entity.Id && s.LoggedEntityName == entity_name) || (s.LoggedEntityId == null || s.LoggedEntityName == null) || (now - s.CreatedAt).TotalDays >= 30 select s); _context.SaveChanges(); }
public static T Get <T>(this HttpContext HttpContext, PortableRecipesContext _context) { if (!HttpContext.Request.Cookies.ContainsKey("PortableRecipesContext")) { return(default(T)); } var old_cookie = HttpContext.Request.Cookies["PortableRecipesContext"]; var old_session = _context.Session.FirstOrDefault(s => s.CookieName == old_cookie); if (old_session != null) { return(JsonConvert.DeserializeObject <T>(old_session.Content)); } return(default(T)); }
public static void Set <T>(this HttpContext HttpContext, PortableRecipesContext _context, T payload) { var cookie = HttpContext.Request.Cookies["PortableRecipesContext"]; var session = _context.Session.FirstOrDefault(s => s.CookieName == cookie); if (session != null) { session.Content = JsonConvert.SerializeObject(payload); } else { session = new Session() { CookieName = cookie, Content = JsonConvert.SerializeObject(payload), CreatedAt = DateTime.Now }; _context.Session.Add(session); } _context.SaveChanges(); }
public static void Logout(this HttpContext HttpContext, PortableRecipesContext _context) { if (HttpContext.Request.Cookies.ContainsKey("PortableRecipesContext")) { var old_cookie = HttpContext.Request.Cookies["PortableRecipesContext"]; var old_session = _context.Session.FirstOrDefault(s => s.CookieName == old_cookie); if (old_session != null) { _context.Session.Remove(old_session); _context.SaveChanges(); if (new Random().Next(100) < 10) { var now = DateTime.Now; var to_remove = _context.Session.Where(s => now - s.CreatedAt > TimeSpan.FromDays(365)).ToList(); _context.Session.RemoveRange(to_remove); _context.SaveChanges(); } } HttpContext.Response.Cookies.Delete("PortableRecipesContext"); } }
public AmericanApiController(PortableRecipesContext context, IHostingEnvironment env, IOptions <MailOptions> mailOptionsAccessor) { _context = context; _mailOptions = mailOptionsAccessor.Value; this.env = env; }
public KeepAliveApiController(PortableRecipesContext context, IOptions <MailOptions> mailOptionsAccessor) { _context = context; _mailOptions = mailOptionsAccessor.Value; }
public static void Login <T, U>(this HttpContext HttpContext, Microsoft.AspNetCore.Hosting.IHostingEnvironment env, PortableRecipesContext _context, string entity_name, U entity, T payload) where U : IEntity { HttpContext.Logout(_context); var now = DateTime.Now; _context.Session.RemoveRange( from s in _context.Session where (s.LoggedEntityId == entity.Id && s.LoggedEntityName == entity_name) || (s.LoggedEntityId == null || s.LoggedEntityName == null) || (now - s.CreatedAt).TotalDays >= 30 select s); _context.SaveChanges(); var random_id = PasswordHasher.RandomString; HttpContext.Response.Cookies.Append("PortableRecipesContext", random_id, new Microsoft.AspNetCore.Http.CookieOptions() { Expires = DateTimeOffset.Now.AddDays(30), HttpOnly = true, Secure = !env.IsDevelopment() }); var new_session = new Session() { CookieName = random_id, LoggedEntityId = entity.Id, LoggedEntityName = entity_name, AdditionalInfo = HttpContext.Connection.RemoteIpAddress.ToString(), Content = JsonConvert.SerializeObject(payload), CreatedAt = DateTime.Now }; _context.Session.Add(new_session); _context.SaveChanges(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IOptions <ApiOptions> apiOptionsAccessor, IHostingEnvironment env, ILoggerFactory loggerFactory, PortableRecipesContext dbContext, IAntiforgery antiforgery) { // loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddConsole(LogLevel.Error); Filters.RestrictToUserTypeAttribute.ApiToken = apiOptionsAccessor.Value.ApiToken; if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); app.UseBrowserLink(); PortableRecipesContextSeeds.Initialize(dbContext); } else { app.UseExceptionHandler("/Home/Error"); loggerFactory.AddNLog(); } app.Use(async(context, next) => { context.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN"); await next(); }); PortableRecipesContextSeeds.InitializePagesAndSingletons(dbContext); app.UseStaticFiles(); // app.UseIdentity(); app.UseSession(); app.UseMvc(routes => { }); }
public CustomController(PortableRecipesContext context, IOptions <MailOptions> mailOptionsAccessor) { _context = context; _mailOptions = mailOptionsAccessor.Value; }