Example #1
0
        public async Task <IActionResult> EditArticle(int userId, [FromBody] ArticleForCreationEdition articleForEdition)
        {
            var article = await _repo.GetArticle(articleForEdition.Id);

            if (!int.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out int id) ||
                (article.AuthorId != id && !User.IsInRole("Admin")))
            {
                return(Unauthorized());
            }

            if (article.Title == articleForEdition.Title &&
                article.Content == articleForEdition.Content &&
                article.Test == articleForEdition.Test)
            {
                return(Ok());
            }

            article.Title   = articleForEdition.Title;
            article.Content = articleForEdition.Content;
            article.Test    = articleForEdition.Test;

            if (await _repo.SaveAll())
            {
                return(Ok());
            }

            throw new Exception("Editing the article failed on save");
        }
Example #2
0
        public async Task <IActionResult> CreateArticle(int userId, [FromForm] ArticleForCreationEdition articleForCreation)
        {
            var author = await _repo.GetUser(userId, false);

            if (!int.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out int id) || author.Id != id)
            {
                return(Unauthorized());
            }

            articleForCreation.AuthorId = userId;

            var article = _mapper.Map <Article> (articleForCreation);

            article.Author = author;

            _repo.Add(article);

            if (await _repo.SaveAll())
            {
                return(Ok());
            }

            throw new Exception("Dodawanie artykułu na serwer nie powiodło sie");
        }