Перейти к содержанию

Ограничение списка доступных файловых шаблонов на сервере

Ограничение списка доступных файловых шаблонов на сервере

Видимость файловых шаблонов для карточек и представлений определяется списком ролей, в которые должен входить пользователь. Если этого недостаточно и требуется запретить или разрешить видимость некоторых шаблонов в программном расширении, то используйте код из примера ниже. Пример показывает серверное расширение на инициализацию, которое переопределяет список шаблонов, добавляемых платформой по умолчанию.

using System.Collections.Generic; using Tessa.Extensions.Platform.Shared.Cards; using Tessa.Platform.Initialization; using Tessa.Platform.Storage;

public sealed class MyFileTemplatesServerInitializationExtension : ServerInitializationExtension { public override void AfterRequest(IServerInitializationExtensionContext context) { if (!context.RequestIsSuccessful) { return; }

Dictionary<string, object> fileTemplates = FileTemplateHelper.GetAvailableFileTemplates(context.DbScope, context.Session);

if (fileTemplates.Count == 0) { return; }

// здесь можно взять текущего пользователя context.Session, список шаблонов fileTemplates, // и удалить из него те шаблоны, которые не должен видеть пользователь

// в каждом из значений object внутри fileTemplates лежит Dictionary<string, object> с информацией по шаблону, // где по ключам из констант в FileTemplateHelper размещены соответствующие свойства; // например, storage[FileTemplateHelper.IDKey] содержит идентификатор карточки шаблона (Guid)

// теперь добавляем обработчик; поскольку мы это делаем в расширениях .WithOrder(BeforePlatform), // то платформа не перезапишет наш обработчик своим

context.AddHandler( InitializationHandlers.FileTemplates, (ctx, stream) => { byte[] data = fileTemplates.ToSerializable().Serialize(); stream.Write(data, 0, data.Length); }); } }

Расширение регистрируется следующим образом. Обязательно надо указать .WithOrder(BeforePlatform), чтобы платформа не заменила наш обработчик шаблонов на стандартный.

extensionContainer .RegisterExtension<IServerInitializationExtension, MyFileTemplatesServerInitializationExtension>(x => x .WithOrder(ExtensionStage.BeforePlatform, 1) .WithSingleton() .WhenApplications(ApplicationIdentifiers.TessaClient)) ;

Back to top