aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/DevHive.Data/Repositories/RoleRepository.cs12
-rw-r--r--src/DevHive.Data/Repositories/UserRepository.cs5
-rw-r--r--src/DevHive.Services/Interfaces/IPostService.cs1
-rw-r--r--src/DevHive.Services/Services/PostService.cs7
-rw-r--r--src/DevHive.Web/Controllers/PostController.cs11
5 files changed, 33 insertions, 3 deletions
diff --git a/src/DevHive.Data/Repositories/RoleRepository.cs b/src/DevHive.Data/Repositories/RoleRepository.cs
index e5cb959..2eeb382 100644
--- a/src/DevHive.Data/Repositories/RoleRepository.cs
+++ b/src/DevHive.Data/Repositories/RoleRepository.cs
@@ -24,6 +24,18 @@ namespace DevHive.Data.Repositories
}
#endregion
+ public override async Task<bool> EditAsync(Guid id, Role newEntity)
+ {
+ Role role = await this.GetByIdAsync(id);
+
+ this._context
+ .Entry(role)
+ .CurrentValues
+ .SetValues(newEntity);
+
+ return await this.SaveChangesAsync(this._context);
+ }
+
#region Validations
public async Task<bool> DoesNameExist(string name)
{
diff --git a/src/DevHive.Data/Repositories/UserRepository.cs b/src/DevHive.Data/Repositories/UserRepository.cs
index 630ad38..6512c42 100644
--- a/src/DevHive.Data/Repositories/UserRepository.cs
+++ b/src/DevHive.Data/Repositories/UserRepository.cs
@@ -55,6 +55,11 @@ namespace DevHive.Data.Repositories
{
User user = await this.GetByIdAsync(id);
+ this._context
+ .Entry(user)
+ .CurrentValues
+ .SetValues(newEntity);
+
user.Languages.Clear();
foreach (var lang in newEntity.Languages)
user.Languages.Add(lang);
diff --git a/src/DevHive.Services/Interfaces/IPostService.cs b/src/DevHive.Services/Interfaces/IPostService.cs
index 37c3354..71b558c 100644
--- a/src/DevHive.Services/Interfaces/IPostService.cs
+++ b/src/DevHive.Services/Interfaces/IPostService.cs
@@ -19,6 +19,7 @@ namespace DevHive.Services.Interfaces
Task<bool> DeletePost(Guid id);
Task<bool> DeleteComment(Guid id);
+ Task<bool> ValidateJwtForCreating(Guid userId, string rawTokenData);
Task<bool> ValidateJwtForPost(Guid postId, string rawTokenData);
Task<bool> ValidateJwtForComment(Guid commentId, string rawTokenData);
}
diff --git a/src/DevHive.Services/Services/PostService.cs b/src/DevHive.Services/Services/PostService.cs
index c3dc82f..d80d815 100644
--- a/src/DevHive.Services/Services/PostService.cs
+++ b/src/DevHive.Services/Services/PostService.cs
@@ -169,6 +169,13 @@ namespace DevHive.Services.Services
#endregion
#region Validations
+ public async Task<bool> ValidateJwtForCreating(Guid userId, string rawTokenData)
+ {
+ User user = await this.GetUserForValidation(rawTokenData);
+
+ return user.Id == userId;
+ }
+
public async Task<bool> ValidateJwtForPost(Guid postId, string rawTokenData)
{
Post post = await this._postRepository.GetByIdAsync(postId) ??
diff --git a/src/DevHive.Web/Controllers/PostController.cs b/src/DevHive.Web/Controllers/PostController.cs
index 8bb1d66..0ca041f 100644
--- a/src/DevHive.Web/Controllers/PostController.cs
+++ b/src/DevHive.Web/Controllers/PostController.cs
@@ -27,9 +27,11 @@ namespace DevHive.Web.Controllers
#region Create
[HttpPost]
- [Authorize(Roles = "Admin")]
- public async Task<IActionResult> Create(Guid userId, [FromBody] CreatePostWebModel createPostWebModel)
+ public async Task<IActionResult> Create(Guid userId, [FromBody] CreatePostWebModel createPostWebModel, [FromHeader] string authorization)
{
+ if (await this._postService.ValidateJwtForCreating(userId, authorization))
+ return new UnauthorizedResult();
+
CreatePostServiceModel createPostServiceModel =
this._postMapper.Map<CreatePostServiceModel>(createPostWebModel);
createPostServiceModel.CreatorId = userId;
@@ -43,8 +45,11 @@ namespace DevHive.Web.Controllers
[HttpPost]
[Route("Comment")]
- public async Task<IActionResult> AddComment(Guid userId, [FromBody] CreateCommentWebModel createCommentWebModel)
+ public async Task<IActionResult> AddComment(Guid userId, [FromBody] CreateCommentWebModel createCommentWebModel, [FromHeader] string authorization)
{
+ if (await this._postService.ValidateJwtForCreating(userId, authorization))
+ return new UnauthorizedResult();
+
CreateCommentServiceModel createCommentServiceModel =
this._postMapper.Map<CreateCommentServiceModel>(createCommentWebModel);
createCommentServiceModel.CreatorId = userId;