ModuleInitializer.cs
6 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Domain.Initialization;
namespace Sungero.ExchangeCore.Server
{
public partial class ModuleInitializer
{
public override void Initializing(Sungero.Domain.ModuleInitializingEventArgs e)
{
// Создание ролей.
InitializationLogger.Debug("Init: Create roles.");
CreateRoles();
// Справочники.
InitializationLogger.Debug("Init: Grant rights on databooks to all users.");
GrantRightsOnDatabooks();
// Создание типов прав модуля.
InitializationLogger.Debug("Init: Create access rights.");
CreateCounterpartyAccessRights();
CreateExchangeServices();
InitializeExchangeServiceUsersRole();
}
/// <summary>
/// Выдать права всем пользователям на справочники.
/// </summary>
public static void GrantRightsOnDatabooks()
{
InitializationLogger.Debug("Init: Grant rights on databooks to all users.");
var allUsers = Roles.AllUsers;
BoxBases.AccessRights.Grant(allUsers, DefaultAccessRightsTypes.Read);
ExchangeServices.AccessRights.Grant(allUsers, DefaultAccessRightsTypes.Read);
BoxBases.AccessRights.Save();
ExchangeServices.AccessRights.Save();
}
/// <summary>
/// Создать предопределенные роли.
/// </summary>
public static void CreateRoles()
{
InitializationLogger.Debug("Init: Create Default Roles");
Docflow.PublicInitializationFunctions.Module.CreateRole(Resources.ExchangeServiceUsersRoleName,
Resources.ExchangeServiceUsersRoleDescription,
Constants.Module.RoleGuid.ExchangeServiceUsersRoleGuid);
}
/// <summary>
/// Создать типы прав для контрагентов.
/// </summary>
public static void CreateCounterpartyAccessRights()
{
InitializationLogger.Debug("Init: Create access rights for counterparty type Counterparty");
CreateAccessRightsForCounterpartyType(Guid.Parse("294767f1-009f-4fbd-80fc-f98c49ddc560"));
}
/// <summary>
/// Создать права для типа контрагента.
/// </summary>
/// <param name="entityTypeGuid">Guid типа контрагента.</param>
public static void CreateAccessRightsForCounterpartyType(Guid entityTypeGuid)
{
// Создать тип прав "Отправка через сервис обмена".
var mask = Parties.CounterpartyOperations.Read ^ Parties.CounterpartyOperations.Update ^ Parties.CounterpartyOperations.SetExchange;
Docflow.PublicInitializationFunctions.Module.CreateAccessRightsType(entityTypeGuid.ToString(), Docflow.Resources.SetExchangeRightTypeName.ToString(), mask,
mask, CoreEntities.AccessRightsType.AccessRightsTypeArea.Type,
Constants.Module.DefaultAccessRightsTypeSid.SetExchange, false, string.Empty);
// Переопределяем тип прав "Изменение".
mask = Parties.CounterpartyOperations.Read ^ Parties.CounterpartyOperations.Create ^ Parties.CounterpartyOperations.Update ^
Parties.CounterpartyOperations.DelegateAccess ^ Parties.CounterpartyOperations.ManageRelations ^ Parties.CounterpartyOperations.ChangeCard;
Docflow.PublicInitializationFunctions.Module.CreateAccessRightsType(entityTypeGuid.ToString(), Docflow.Resources.UpdateRightTypeName.ToString(), mask,
mask, CoreEntities.AccessRightsType.AccessRightsTypeArea.Both,
Constants.Module.DefaultAccessRightsTypeSid.Update, true, string.Empty);
}
/// <summary>
/// Инициализация роли "Пользователи с правами на работу через сервис обмена".
/// </summary>
public static void InitializeExchangeServiceUsersRole()
{
InitializationLogger.Debug("Init: Initialize Exchange Service Users role");
var exchangeServiceUsersRole = ExchangeCore.PublicFunctions.Module.GetExchangeServiceUsersRole();
if (exchangeServiceUsersRole == null)
{
InitializationLogger.Debug("Init: No service users role found");
return;
}
Parties.Counterparties.AccessRights.Grant(exchangeServiceUsersRole, Constants.Module.DefaultAccessRightsTypeSid.SetExchange);
Parties.Counterparties.AccessRights.Save();
}
public static void CreateExchangeServices()
{
CreateExchangeService("https://diadoc-api.kontur.ru/", ExchangeCore.ExchangeService.ExchangeProvider.Diadoc,
"https://diadoc.kontur.ru/");
CreateExchangeService("https://online.sbis.ru/", ExchangeCore.ExchangeService.ExchangeProvider.Sbis,
"https://online.sbis.ru/");
}
/// <summary>
/// Создать сервис обмена.
/// </summary>
/// <param name="uri">Ссылка на сервис.</param>
/// <param name="exchangeProvider">Оператор обмена. ExchangeCore.ExchangeService.ExchangeProvider.</param>
/// <param name="logonUrl">URL личного кабинета.</param>
public static void CreateExchangeService(string uri, Enumeration exchangeProvider, string logonUrl)
{
if (ExchangeServices.GetAll(s => Equals(s.ExchangeProvider, exchangeProvider)).Any())
return;
var system = ExchangeServices.Create();
system.Name = ExchangeServices.Info.Properties.ExchangeProvider.GetLocalizedValue(exchangeProvider);
system.Uri = uri;
system.ExchangeProvider = exchangeProvider;
system.LogonUrl = logonUrl;
system.Save();
}
}
}