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"); }
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"); }