public async Task<ActionResult> Login(LoginModel model) { if (!ModelState.IsValid) { return View(model); } var blogContext = new BlogContext(); var user = await blogContext.Users.Find(x => x.Email == model.Email).SingleOrDefaultAsync(); if (user == null) { ModelState.AddModelError("Email", "Email address has not been registered."); return View(model); } ClaimsIdentity identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, user.Name), new Claim(ClaimTypes.Email, user.Email) }, "ApplicationCookie"); IOwinContext context = Request.GetOwinContext(); IAuthenticationManager authManager = context.Authentication; authManager.SignIn(identity); return Redirect(GetRedirectUrl(model.ReturnUrl)); }
public async Task<ActionResult> Index() { var blogContext = new BlogContext(); var recentPosts = await blogContext.Posts.Find(x => true) .SortByDescending(x => x.CreatedAtUtc) .Limit(10) .ToListAsync(); var model = new IndexModel { RecentPosts = recentPosts }; return View(model); }
public async Task<ActionResult> Register(RegisterModel model) { if (!ModelState.IsValid) { return View(model); } var blogContext = new BlogContext(); var user = new User { Name = model.Name, Email = model.Email }; await blogContext.Users.InsertOneAsync(user); return RedirectToAction("Index", "Home"); }
public async Task<ActionResult> Post(string id) { var blogContext = new BlogContext(); var post = await blogContext.Posts.Find(x => x.Id == id).SingleOrDefaultAsync(); if (post == null) { return RedirectToAction("Index"); } var model = new PostModel { Post = post, NewComment = new NewCommentModel { PostId = id } }; return View(model); }
public async Task<ActionResult> NewPost(NewPostModel model) { if (!ModelState.IsValid) { return View(model); } var blogContext = new BlogContext(); var post = new Post { Author = User.Identity.Name, Title = model.Title, Content = model.Content, Tags = model.Tags.Split(' ', ',', ';'), CreatedAtUtc = DateTime.UtcNow, Comments = new List<Comment>() }; await blogContext.Posts.InsertOneAsync(post); return RedirectToAction("Post", new { id = post.Id }); }
public async Task<ActionResult> Posts(string tag = null) { var blogContext = new BlogContext(); Expression<Func<Post, bool>> filter = x => true; if (tag != null) { filter = x => x.Tags.Contains(tag); } var posts = await blogContext.Posts.Find(filter) .SortByDescending(x => x.CreatedAtUtc) .Limit(10) .ToListAsync(); return View(posts); }
public async Task<ActionResult> NewComment(NewCommentModel model) { if (!ModelState.IsValid) { return RedirectToAction("Post", new { id = model.PostId }); } var comment = new Comment { Author = User.Identity.Name, Content = model.Content, CreatedAtUtc = DateTime.UtcNow }; var blogContext = new BlogContext(); await blogContext.Posts.UpdateOneAsync( x => x.Id == model.PostId, Builders<Post>.Update.Push(x => x.Comments, comment)); return RedirectToAction("Post", new { id = model.PostId }); }