Пример #1
0
        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();
            }
        }
Пример #2
0
        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");
            }
        }
Пример #3
0
        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");
            }
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }