убрали simpleview

This commit is contained in:
kotcheshir73 2021-03-28 19:58:42 +04:00
parent 65b2c39f0b
commit 349ba066fd
7 changed files with 35 additions and 43 deletions

View File

@ -31,11 +31,6 @@ namespace DatabaseCore
Access access = null;
if (model != null)
{
// простой просмотр возможен
if (model.Model.SkipCheck && model.Type == AccessType.SimpleView)
{
return true;
}
// если не указан идентификатор пользователя, то смотрим, может он авторизован
if (!model.Model.UserId.HasValue && User.HasValue)
{
@ -60,7 +55,7 @@ namespace DatabaseCore
}
switch (model.Type)
{
case AccessType.FullView:
case AccessType.View:
ErrorMessage = $"Нет доступа на чтение данных по сущности '{model.Entity}'";
return false;
case AccessType.Change:

View File

@ -7,11 +7,6 @@ namespace ModuleTools.BindingModels
/// </summary>
public class AccessBindingModel
{
/// <summary>
/// Пропускать проверку (работает только для получения данных)
/// </summary>
public bool SkipCheck { get; set; }
/// <summary>
/// Идентификатор пользователя, который запрашивает выполнение операции
/// </summary>

View File

@ -26,14 +26,31 @@ namespace ModuleTools.BusinessLogics
/// </summary>
public List<(string Title, string Message)> Errors { get; protected set; }
/// <summary>
/// Сервис с хранилищем данных
/// </summary>
protected IEntityService<G, S> Service { get; set; }
/// <summary>
/// Менеджер безопасности
/// </summary>
protected ISecurityManager Security { get; set; }
/// <summary>
/// Тип операции, скоторым работает логика
/// </summary>
protected readonly AccessOperation _serviceOperation;
/// <summary>
/// Название сущности
/// </summary>
protected readonly string _entity;
/// <summary>
/// Возможен ли просмотр без авторизации
/// </summary>
protected bool _allowSimpleView = true;
public BusinessLogicCore(IEntityService<G, S> service, string entity, AccessOperation serviceOperation)
{
Service = service;
@ -70,9 +87,10 @@ namespace ModuleTools.BusinessLogics
Errors.Clear();
try
{
if (NoAccess(model, AccessType.SimpleView) && NoAccess(model, AccessType.FullView))
var fullView = NoAccess(model, AccessType.View);
if (fullView && !_allowSimpleView)
{
return null;
throw new MethodAccessException("Нет прав на получение списка");
}
var result = Service.Read(model);
if (!result.IsSucceeded)
@ -100,9 +118,10 @@ namespace ModuleTools.BusinessLogics
Errors.Clear();
try
{
if (NoAccess(model, AccessType.SimpleView) && NoAccess(model, AccessType.FullView))
var fullView = NoAccess(model, AccessType.View);
if (fullView && !_allowSimpleView)
{
return null;
throw new MethodAccessException("Нет прав на получение списка");
}
var result = Service.Read(model);
if (!result.IsSucceeded)

View File

@ -5,24 +5,19 @@
/// </summary>
public enum AccessType : int
{
/// <summary>
/// Простой просомтр
/// </summary>
SimpleView = 1,
/// <summary>
/// Полный просомтр
/// </summary>
FullView = 2,
View = 1,
/// <summary>
/// Добавление/Изменение
/// </summary>
Change = 4,
Change = 2,
/// <summary>
/// Удаление
/// </summary>
Delete = 8
Delete = 4
}
}

View File

@ -32,25 +32,13 @@ namespace SecurityBusinessLogic.ViewModels
public AccessType AccessType { get; set; }
[ViewModelOnListProperty("Тип", 150)]
public string AccessTypeTitle
public string AccessTypeTitle => AccessType switch
{
get
{
switch (AccessType)
{
case AccessType.Delete:
return "Полные права";
case AccessType.Change:
return "Просмотр, Редактирование";
case AccessType.FullView:
return "Просмотр";
case AccessType.SimpleView:
return "Частичный просмотр";
default:
return "Неопределено";
}
}
}
AccessType.Delete => "Полные права",
AccessType.Change => "Просмотр, Редактирование",
AccessType.View => "Просмотр",
_ => "Неопределено",
};
public override string ToString() => $"{RoleName}-{AccessOperationTitle}({AccessTypeTitle})";
}

View File

@ -22,7 +22,7 @@ namespace SecurityWindowsDesktop
}
if (!manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = manager.User },
AccessOperation.Администрирование, AccessType.SimpleView, "Администрирование")))
AccessOperation.Администрирование, AccessType.View, "Администрирование")))
{
return null;
}
@ -42,7 +42,7 @@ namespace SecurityWindowsDesktop
foreach (var cntrl in _controls)
{
if (manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = manager.User },
cntrl.AccessOperation, AccessType.SimpleView, cntrl.Title)))
cntrl.AccessOperation, AccessType.View, cntrl.Title)))
{
list.Add(new WindowDesktopExtensionControlModel
{