コード例 #1
0
        public IActionResult EditPost(PostPatch parameters)
        {
            var userID = JWTUtility.GetUserID(HttpContext);
            var role   = JWTUtility.GetRole(HttpContext);

            var post = (from posts in _context.Posts
                        where posts.Id == parameters.ID
                        select posts).Single();

            if (role != RoleType.Admin && post.Userid != userID)
            {
                return(BadRequest(new { error = "You do not have permission to edit this post" }));
            }

            if (parameters.Post.Count() > _maxPostCharacterCount)
            {
                return(BadRequest(new { error = "Your post has too many characters" }));
            }

            post.Editdate = DateTime.Now;
            post.Post     = parameters.Post;

            _context.SaveChanges();

            return(Ok());
        }
コード例 #2
0
        private bool AddUserToDB(RegisterPost userInfo)
        {
            //BCrypt bundles its salt in the hash
            var hash = BCrypt.Net.BCrypt.HashPassword(userInfo.Password);

            var newUser = new Users
            {
                Username = userInfo.Username.Trim(),
                Hash     = hash,
                Access   = "User"
            };

            try
            {
                _context.Users.Add(newUser);
                _context.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(false);
            }

            return(true);
        }
コード例 #3
0
        public IActionResult PatchPassword(UpdateProfilePatch parameters)
        {
            if (parameters.New.Count() < 8)
            {
                return(BadRequest(new { error = "Password must be at least 8 characters long" }));
            }

            if (parameters.New != parameters.Confirm)
            {
                return(BadRequest(new { error = "Passwords do not match" }));
            }

            var userID = JWTUtility.GetUserID(HttpContext);

            var user = (from users in _context.Users
                        where users.Id == userID
                        select users).Single();

            if (!BCrypt.Net.BCrypt.Verify(parameters.Current, user.Hash))
            {
                return(BadRequest(new { error = "Current password incorrect" }));
            }

            var newHash = BCrypt.Net.BCrypt.HashPassword(parameters.New);

            user.Hash = newHash;
            _context.SaveChanges();

            return(Ok());
        }
コード例 #4
0
        public IActionResult PostComment(CommentPost parameters)
        {
            var userID = JWTUtility.GetUserID(HttpContext);

            var comment = new Comments
            {
                Comment   = parameters.Comment,
                Userid    = userID,
                Postid    = parameters.PostID,
                Createdon = DateTime.Now
            };

            _context.Comments.Add(comment);
            _context.SaveChanges();

            return(Ok());
        }
コード例 #5
0
        public IActionResult AddLike(LikesPut parameters)
        {
            var userID = JWTUtility.GetUserID(HttpContext);

            var queryCheckAlreadyLiked = (from likes in _context.Likes
                                          where likes.Userid == userID &&
                                          likes.Postid == parameters.PostID
                                          select likes).FirstOrDefault();

            if (queryCheckAlreadyLiked != null)
            {
                return(Ok()); // Ignore. No need to throw error.
            }
            var newLike = new Likes()
            {
                Userid = userID,
                Postid = parameters.PostID
            };

            _context.Likes.Add(newLike);
            _context.SaveChanges();

            return(Ok());
        }
コード例 #6
0
        public IActionResult SubmitPost([FromBody] PostPost post)
        {
            if (post.Post.Count() > _maxPostCharacterCount)
            {
                return(BadRequest());
            }

            var userID = JWTUtility.GetUserID(HttpContext);

            var newPost = new Posts()
            {
                Createdon = DateTime.Now,
                Userid    = userID,
                Post      = post.Post
            };

            _context.Posts.Add(newPost);
            _context.SaveChanges();

            return(Ok());
        }