Skip to content
This repository was archived by the owner on Aug 1, 2021. It is now read-only.

Commit 9b225cc

Browse files
committed
policies
1 parent 72387c6 commit 9b225cc

71 files changed

Lines changed: 37751 additions & 522 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Backend/Jp.Application/AutoMapper/DomainToViewModelMappingProfile.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ public DomainToViewModelMappingProfile()
2828
CreateMap<IdentityServer4.EntityFramework.Entities.ClientProperty, ClientPropertyViewModel>();
2929
CreateMap<IdentityServer4.EntityFramework.Entities.ClientClaim, ClaimViewModel>();
3030
CreateMap<IdentityServer4.EntityFramework.Entities.IdentityResource, IdentityResourceListView>(MemberList.Destination);
31-
CreateMap<IdentityServer4.EntityFramework.Entities.ApiScope, ScopeViewModel>(MemberList.Destination);
31+
CreateMap<IdentityServer4.EntityFramework.Entities.ApiScope, ScopeViewModel>();
32+
CreateMap<IdentityServer4.EntityFramework.Entities.UserClaim, ClaimViewModel>(MemberList.Destination);
33+
3234
CreateMap<Claim, ClaimViewModel>(MemberList.Destination);
3335
CreateMap<Role, RoleViewModel>(MemberList.Destination);
3436
CreateMap<UserLogin, UserLoginViewModel>(MemberList.Destination);

src/Backend/Jp.Application/Services/ApiResourceAppService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ public Task SaveSecret(SaveApiSecretViewModel model)
8989

9090
public async Task<IEnumerable<ScopeViewModel>> GetScopes(string name)
9191
{
92-
return _mapper.Map<IEnumerable<ScopeViewModel>>(await _apiScopeRepository.GetScopesByResource(name));
92+
var scopes = await _apiScopeRepository.GetScopesByResource(name);
93+
return _mapper.Map<IEnumerable<ScopeViewModel>>(scopes);
9394
}
9495

9596
public Task RemoveScope(RemoveApiScopeViewModel model)
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
namespace Jp.Application.ViewModels
1+
using System.Collections.Generic;
2+
3+
namespace Jp.Application.ViewModels
24
{
35
public class ScopeViewModel
46
{
57
public int Id { get; set; }
68
public string Name { get; set; }
7-
public string Description { get; set; }
9+
public string DisplayName { get; set; }
10+
public bool Required { get; set; }
11+
public bool Emphasize { get; set; }
12+
public bool ShowInDiscoveryDocument { get; set; }
13+
public IEnumerable<ClaimViewModel> UserClaims { get; set; }
14+
815
}
916
}

src/Backend/Jp.Infra.Data/Repository/ApiScopeRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public ApiScopeRepository(JpContext context) : base(context)
1515
}
1616

1717
public Task<List<ApiScope>> SearchScopes(string search) => DbSet.Where(id => id.Name.Contains(search)).ToListAsync();
18-
public Task<List<ApiScope>> GetScopesByResource(string search) => DbSet.Where(id => id.ApiResource.Name == search).ToListAsync();
18+
public Task<List<ApiScope>> GetScopesByResource(string search) => DbSet.Include(s => s.UserClaims).Where(id => id.ApiResource.Name == search).ToListAsync();
1919

2020
}
2121
}

src/Backend/Jp.UserManagement/Configuration/AuthenticationConfig.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System;
2-
using System.Threading.Tasks;
3-
using IdentityServer4.AccessTokenValidation;
1+
using IdentityServer4.AccessTokenValidation;
42
using Jp.Infra.CrossCutting.Tools.DefaultConfig;
53
using Microsoft.AspNetCore.Builder;
64
using Microsoft.Extensions.DependencyInjection;
@@ -13,7 +11,7 @@ public static class AuthenticationConfig
1311
public static void AddIdentityServerAuthentication(this IServiceCollection services, ILogger logger)
1412
{
1513
logger.LogInformation($"Authority URI: {JpProjectConfiguration.IdentityServerUrl}");
16-
14+
Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
1715
services
1816

1917
.AddAuthentication(options =>
@@ -26,7 +24,7 @@ public static void AddIdentityServerAuthentication(this IServiceCollection servi
2624
options.Authority = JpProjectConfiguration.IdentityServerUrl;
2725
options.RequireHttpsMetadata = false;
2826
options.ApiSecret = "Q&tGrEQMypEk.XxPU:%bWDZMdpZeJiyMwpLv4F7d**w9x:7KuJ#fy,E8KPHpKz++";
29-
options.ApiName = "management-api";
27+
options.ApiName = "jp_api";
3028

3129
});
3230
}
Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Microsoft.AspNetCore.Authorization;
1+
using IdentityServer4.Extensions;
22
using Microsoft.Extensions.DependencyInjection;
33

44
namespace Jp.Management.Configuration
@@ -7,15 +7,20 @@ public static class ConfigurePolicy
77
{
88
public static void AddPolicies(this IServiceCollection services)
99
{
10-
return;
1110
services.AddAuthorization(options =>
1211
{
13-
options.AddPolicy("IS4-Adm", policy => policy.RequireAssertion(context => context.User.HasClaim("IS4-Permission", "Manager") || context.User.IsInRole("Administrator")).RequireScope("management-api.identityserver4-manager"));
14-
options.AddPolicy("IS4-ReadOnly", policy => policy.RequireScope("management-api.identityserver4-manager").RequireAssertion(context => context.User.HasClaim("IS4-Permission", "Manager") || context.User.IsInRole("Administrator") || context.User.HasClaim("IS4-Permission", "ReadOnly")));
12+
options.AddPolicy("Admin",
13+
policy => policy.RequireAssertion(c =>
14+
c.User.HasClaim("is4-rights", "manager") ||
15+
c.User.IsInRole("Administrador")));
16+
17+
options.AddPolicy("ReadOnly", policy =>
18+
policy.RequireAssertion(c =>
19+
c.User.IsAuthenticated() ||
20+
c.User.HasClaim("is4-rights", "manager") ||
21+
c.User.IsInRole("Administrador")));
1522
});
1623

1724
}
18-
19-
2025
}
2126
}

src/Backend/Jp.UserManagement/Controllers/ApiController.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using System.Collections.Generic;
32
using System.Linq;
4-
using IdentityModel;
53
using Jp.Domain.Core.Bus;
64
using Jp.Domain.Core.Notifications;
75
using Jp.Infra.CrossCutting.Tools.Model;

src/Backend/Jp.UserManagement/Controllers/ApiResourceController.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
using Jp.Domain.Core.Notifications;
1010
using Jp.Infra.CrossCutting.Tools.Model;
1111
using MediatR;
12+
using Microsoft.AspNetCore.Authorization;
1213
using Microsoft.AspNetCore.Mvc;
1314

1415
namespace Jp.Management.Controllers
1516
{
16-
[Route("[controller]")]
17+
[Route("[controller]"), Authorize(Policy = "ReadOnly")]
1718
public class ApiResourceController : ApiController
1819
{
1920
private readonly IApiResourceAppService _apiResourceAppService;
@@ -41,7 +42,7 @@ public async Task<ActionResult<DefaultResponse<ApiResource>>> Details(string nam
4142
return Response(irs);
4243
}
4344

44-
[HttpPost, Route("save")]
45+
[HttpPost, Route("save"), Authorize(Policy = "Admin")]
4546
public async Task<ActionResult<DefaultResponse<bool>>> Save([FromBody] ApiResource model)
4647
{
4748
if (!ModelState.IsValid)
@@ -53,7 +54,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> Save([FromBody] ApiResour
5354
return Response(true);
5455
}
5556

56-
[HttpPost, Route("update")]
57+
[HttpPost, Route("update"), Authorize(Policy = "Admin")]
5758
public async Task<ActionResult<DefaultResponse<bool>>> Update([FromBody] ApiResource model)
5859
{
5960
if (!ModelState.IsValid)
@@ -65,7 +66,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> Update([FromBody] ApiReso
6566
return Response(true);
6667
}
6768

68-
[HttpPost, Route("remove")]
69+
[HttpPost, Route("remove"), Authorize(Policy = "Admin")]
6970
public async Task<ActionResult<DefaultResponse<bool>>> Remove([FromBody] RemoveApiResourceViewModel model)
7071
{
7172
if (!ModelState.IsValid)
@@ -86,7 +87,7 @@ public async Task<ActionResult<DefaultResponse<IEnumerable<SecretViewModel>>>> S
8687
return Response(clients);
8788
}
8889

89-
[HttpPost, Route("remove-secret")]
90+
[HttpPost, Route("remove-secret"), Authorize(Policy = "Admin")]
9091
public async Task<ActionResult<DefaultResponse<bool>>> RemoveSecret([FromBody] RemoveApiSecretViewModel model)
9192
{
9293
if (!ModelState.IsValid)
@@ -99,7 +100,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> RemoveSecret([FromBody] R
99100
}
100101

101102

102-
[HttpPost, Route("save-secret")]
103+
[HttpPost, Route("save-secret"), Authorize(Policy = "Admin")]
103104
public async Task<ActionResult<DefaultResponse<bool>>> SaveSecret([FromBody] SaveApiSecretViewModel model)
104105
{
105106
if (!ModelState.IsValid)
@@ -118,7 +119,7 @@ public async Task<ActionResult<DefaultResponse<IEnumerable<ScopeViewModel>>>> Sc
118119
return Response(clients);
119120
}
120121

121-
[HttpPost, Route("remove-scope")]
122+
[HttpPost, Route("remove-scope"), Authorize(Policy = "Admin")]
122123
public async Task<ActionResult<DefaultResponse<bool>>> RemoveScope([FromBody] RemoveApiScopeViewModel model)
123124
{
124125
if (!ModelState.IsValid)
@@ -131,7 +132,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> RemoveScope([FromBody] Re
131132
}
132133

133134

134-
[HttpPost, Route("save-scope")]
135+
[HttpPost, Route("save-scope"), Authorize(Policy = "Admin")]
135136
public async Task<ActionResult<DefaultResponse<bool>>> SaveScope([FromBody] SaveApiScopeViewModel model)
136137
{
137138
if (!ModelState.IsValid)

src/Backend/Jp.UserManagement/Controllers/ClientController.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.Linq;
23
using System.Threading.Tasks;
34
using IdentityServer4.Models;
45
using Jp.Application.Interfaces;
@@ -8,13 +9,12 @@
89
using Jp.Domain.Core.Notifications;
910
using Jp.Infra.CrossCutting.Tools.Model;
1011
using MediatR;
12+
using Microsoft.AspNetCore.Authorization;
1113
using Microsoft.AspNetCore.Mvc;
1214

1315
namespace Jp.Management.Controllers
1416
{
15-
[Route("[controller]"),
16-
// Authorize(Policy = "IS4-ReadOnly")
17-
]
17+
[Route("[controller]"), Authorize(Policy = "ReadOnly")]
1818
public class ClientsController : ApiController
1919
{
2020
private readonly IClientAppService _clientAppService;
@@ -34,7 +34,7 @@ public async Task<ActionResult<DefaultResponse<IEnumerable<ClientListViewModel>>
3434
return Response(clients);
3535
}
3636

37-
[HttpPost, Route("save")]
37+
[HttpPost, Route("save"), Authorize(Policy = "Admin")]
3838
public async Task<ActionResult<DefaultResponse<bool>>> Save([FromBody] SaveClientViewModel client)
3939
{
4040
if (!ModelState.IsValid)
@@ -46,7 +46,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> Save([FromBody] SaveClien
4646
return Response(true);
4747
}
4848

49-
[HttpPost, Route("update")]
49+
[HttpPost, Route("update"), Authorize(Policy = "Admin")]
5050
public async Task<ActionResult<DefaultResponse<bool>>> Update([FromBody] Client client)
5151
{
5252
if (!ModelState.IsValid)
@@ -58,7 +58,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> Update([FromBody] Client
5858
return Response(true);
5959
}
6060

61-
[HttpPost, Route("remove")]
61+
[HttpPost, Route("remove"), Authorize(Policy = "Admin")]
6262
public async Task<ActionResult<DefaultResponse<bool>>> Remove([FromBody] RemoveClientViewModel client)
6363
{
6464
if (!ModelState.IsValid)
@@ -70,7 +70,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> Remove([FromBody] RemoveC
7070
return Response(true);
7171
}
7272

73-
[HttpPost, Route("copy")]
73+
[HttpPost, Route("copy"), Authorize(Policy = "Admin")]
7474
public async Task<ActionResult<DefaultResponse<bool>>> Copy([FromBody] CopyClientViewModel client)
7575
{
7676
if (!ModelState.IsValid)
@@ -96,7 +96,7 @@ public async Task<ActionResult<DefaultResponse<IEnumerable<SecretViewModel>>>> S
9696
return Response(clients);
9797
}
9898

99-
[HttpPost, Route("remove-secret")]
99+
[HttpPost, Route("remove-secret"), Authorize(Policy = "Admin")]
100100
public async Task<ActionResult<DefaultResponse<bool>>> RemoveSecret([FromBody] RemoveClientSecretViewModel model)
101101
{
102102
if (!ModelState.IsValid)
@@ -109,7 +109,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> RemoveSecret([FromBody] R
109109
}
110110

111111

112-
[HttpPost, Route("save-secret")]
112+
[HttpPost, Route("save-secret"), Authorize(Policy = "Admin")]
113113
public async Task<ActionResult<DefaultResponse<bool>>> SaveSecret([FromBody] SaveClientSecretViewModel model)
114114
{
115115
if (!ModelState.IsValid)
@@ -128,7 +128,7 @@ public async Task<ActionResult<DefaultResponse<IEnumerable<ClientPropertyViewMod
128128
return Response(clients);
129129
}
130130

131-
[HttpPost, Route("remove-property")]
131+
[HttpPost, Route("remove-property"), Authorize(Policy = "Admin")]
132132
public async Task<ActionResult<DefaultResponse<bool>>> RemoveProperty([FromBody] RemovePropertyViewModel model)
133133
{
134134
if (!ModelState.IsValid)
@@ -141,7 +141,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> RemoveProperty([FromBody]
141141
}
142142

143143

144-
[HttpPost, Route("save-property")]
144+
[HttpPost, Route("save-property"), Authorize(Policy = "Admin")]
145145
public async Task<ActionResult<DefaultResponse<bool>>> SaveProperty([FromBody] SaveClientPropertyViewModel model)
146146
{
147147
if (!ModelState.IsValid)
@@ -160,7 +160,7 @@ public async Task<ActionResult<DefaultResponse<IEnumerable<ClaimViewModel>>>> Cl
160160
return Response(clients);
161161
}
162162

163-
[HttpPost, Route("remove-claim")]
163+
[HttpPost, Route("remove-claim"), Authorize(Policy = "Admin")]
164164
public async Task<ActionResult<DefaultResponse<bool>>> RemoveClaim([FromBody] RemoveClientClaimViewModel model)
165165
{
166166
if (!ModelState.IsValid)
@@ -173,7 +173,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> RemoveClaim([FromBody] Re
173173
}
174174

175175

176-
[HttpPost, Route("save-claim")]
176+
[HttpPost, Route("save-claim"), Authorize(Policy = "Admin")]
177177
public async Task<ActionResult<DefaultResponse<bool>>> SaveClaim([FromBody] SaveClientClaimViewModel model)
178178
{
179179
if (!ModelState.IsValid)

src/Backend/Jp.UserManagement/Controllers/IdentityResourceController.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@
1010
using Jp.Domain.Core.Notifications;
1111
using Jp.Infra.CrossCutting.Tools.Model;
1212
using MediatR;
13+
using Microsoft.AspNetCore.Authorization;
1314
using Microsoft.AspNetCore.Mvc;
1415

1516
namespace Jp.Management.Controllers
1617
{
17-
[Route("[controller]"),
18-
// Authorize(Policy = "IS4-ReadOnly")
19-
]
18+
[Route("[controller]"), Authorize(Policy = "ReadOnly")]
2019
public class IdentityResourceController: ApiController
2120
{
2221
private readonly IIdentityResourceAppService _identityResourceAppService;
@@ -43,7 +42,7 @@ public async Task<ActionResult<DefaultResponse<IdentityResource>>> Details(strin
4342
return Response(irs);
4443
}
4544

46-
[HttpPost, Route("save")]
45+
[HttpPost, Route("save"), Authorize(Policy = "Admin")]
4746
public async Task<ActionResult<DefaultResponse<bool>>> Save([FromBody] IdentityResource model)
4847
{
4948
if (!ModelState.IsValid)
@@ -55,7 +54,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> Save([FromBody] IdentityR
5554
return Response(true);
5655
}
5756

58-
[HttpPost, Route("update")]
57+
[HttpPost, Route("update"), Authorize(Policy = "Admin")]
5958
public async Task<ActionResult<DefaultResponse<bool>>> Update([FromBody] IdentityResource model)
6059
{
6160
if (!ModelState.IsValid)
@@ -67,7 +66,7 @@ public async Task<ActionResult<DefaultResponse<bool>>> Update([FromBody] Identit
6766
return Response(true);
6867
}
6968

70-
[HttpPost, Route("remove")]
69+
[HttpPost, Route("remove"), Authorize(Policy = "Admin")]
7170
public async Task<ActionResult<DefaultResponse<bool>>> Remove([FromBody] RemoveIdentityResourceViewModel model)
7271
{
7372
if (!ModelState.IsValid)

0 commit comments

Comments
 (0)