-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathConfigureApplicationParticipant.cs
More file actions
66 lines (57 loc) · 2.09 KB
/
ConfigureApplicationParticipant.cs
File metadata and controls
66 lines (57 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Collections.Generic;
using System.Linq;
using Shuttle.Access.Messages.v1;
using Shuttle.Access.RestClient;
using Shuttle.Core.Contract;
using Shuttle.Core.Mediator;
using ConfigureApplication = Shuttle.Sentinel.Messages.v1.ConfigureApplication;
namespace Shuttle.Sentinel.Application
{
public class ConfigureApplicationParticipant : IParticipant<ConfigureApplication>
{
private readonly IAccessClient _accessClient;
private readonly List<string> _permissions = new List<string>
{
"sentinel://data-stores/manage",
"sentinel://messages/manage",
"sentinel://monitoring/manage",
"sentinel://queues/manage",
"sentinel://schedules/manage",
"sentinel://subscriptions/manage",
"sentinel://data-stores/view",
"sentinel://monitoring/view",
"sentinel://queues/view",
"sentinel://schedules/view",
"sentinel://subscriptions/view"
};
public ConfigureApplicationParticipant(IAccessClient accessClient)
{
Guard.AgainstNull(accessClient, nameof(accessClient));
_accessClient = accessClient;
}
public void ProcessMessage(IParticipantContext<ConfigureApplication> context)
{
Guard.AgainstNull(context, nameof(context));
var response = _accessClient.Permissions.Get().Result;
if (!response.IsSuccessStatusCode ||
response.Content == null)
{
throw new SentinelException(Resources.GetPermissionsException, response.Error);
}
var permissions = response.Content.Select(item => item.Name);
foreach (var permission in _permissions)
{
if (permissions.Contains(permission))
{
continue;
}
_accessClient.Permissions.Post(new RegisterPermission
{
Name = permission,
Status = 1
});
}
}
}
}