public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) { // Setup configuration sources. var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath) .AddJsonFile("config.json") .AddEnvironmentVariables(); Configuration = builder.Build(); using (var context = new RSSReaderDataContext()) { context.Database.EnsureCreated(); } }
public IActionResult Signup(User user) { if (ModelState.IsValid) { var captchaImage = Context.Request.Form["__captcha_image"]; var encryptedString = Convert.ToBase64String(UTF32Encoding.Unicode.GetBytes(user.Captcha)); if (captchaImage != encryptedString) { ModelState.AddModelError("", "Captcha images not matching."); return View("SignUp"); } else { using (var dataContext = new RSSReaderDataContext()) { var isNameExists = dataContext.Users.Any(x => x.Name.Equals(user.Name, StringComparison.CurrentCultureIgnoreCase)); if (isNameExists) { ModelState.AddModelError("", "Username already exists. Try another one."); return View("SignUp"); } var isEmailExists = dataContext.Users.Any(x => x.Email.Equals(user.Email, StringComparison.CurrentCultureIgnoreCase)); if (isEmailExists) { ModelState.AddModelError("", "Email already exists. Try another one."); return View("SignUp"); } dataContext.Users.Add(user); dataContext.SaveChangesAsync(); return Redirect("~/Home/SignIn"); } } } else { ModelState.AddModelError("", "Please fill all the required fields."); return View("SignUp"); } }
public IActionResult SignIn(SignInUser signInUser) { if (ModelState.IsValid) { using (var dataContext = new RSSReaderDataContext()) { var loggedInUser = dataContext.Users.FirstOrDefault(x => x.Email == signInUser.Email && x.Password == signInUser.Password); if (loggedInUser != null) { var user = new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.Email, loggedInUser.Email), new Claim(ClaimTypes.Name , loggedInUser.Name), new Claim(ClaimTypes.NameIdentifier, loggedInUser.Id.ToString()) }, CookieAuthenticationDefaults.AuthenticationScheme)); Context.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user); return Redirect("~/Home/Index"); } else { ModelState.AddModelError("", "Login failed. Please check your username / password"); return View("SignIn"); } } } else { ModelState.AddModelError("", "Please fill all the required fields."); return View("SignIn"); } }
public IActionResult FeedDetails([FromQuery] int id) { using (var dataContext = new RSSReaderDataContext()) { var feeds = dataContext.FeedDetails.Where(x => x.FeedId == id && x.UserId == LoggedUserId()).ToList(); return Json(feeds); } }
public async Task<IActionResult> Add(FeedMaster feedMaster) { if (ModelState.IsValid) { using (var dataContext = new RSSReaderDataContext()) { var currentFeedInfo = await LoadSyndicationFeed(feedMaster.Url); feedMaster.Description = currentFeedInfo.Description?.Text; feedMaster.Title = currentFeedInfo.Title?.Text; feedMaster.Icon = currentFeedInfo.ImageUrl?.AbsoluteUri; feedMaster.UserId = LoggedUserId(); dataContext.FeedMaster.Add(feedMaster); await dataContext.SaveChangesAsync(); foreach (var item in currentFeedInfo.Items) { var feedDetail = new FeedDetail(); feedDetail.CreatedOn = item.PublishDate.UtcDateTime; feedDetail.Content = item.Summary?.Text; if (feedDetail.Content == null) { feedDetail.Content = (item.Content as TextSyndicationContent)?.Text; } feedDetail.FeedId = feedMaster.Id; feedDetail.Url = item.Links[0]?.Uri.AbsoluteUri; feedDetail.Title = item.Title?.Text; feedDetail.Tags = string.Join(",", item.Categories.Select(x => x.Name)); feedDetail.UserId = LoggedUserId(); dataContext.FeedDetails.Add(feedDetail); } await dataContext.SaveChangesAsync(); return Created(string.Format("/Home/Feed/{0}", feedMaster.Id), feedMaster); } } return HttpBadRequest(ModelState); }
public IActionResult Settings(FeedConfig feedConfig) { if (ModelState.IsValid) { using (var dataContext = new RSSReaderDataContext()) { feedConfig.UserId = LoggedUserId(); dataContext.FeedConfigs.Add(feedConfig); dataContext.SaveChangesAsync(); return Created(string.Format("/Home/FeedConfig/{0}", feedConfig.Id), feedConfig); } } return HttpBadRequest(ModelState); }