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

View File

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

View File

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

View File

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

View File

@ -32,25 +32,13 @@ namespace SecurityBusinessLogic.ViewModels
public AccessType AccessType { get; set; } public AccessType AccessType { get; set; }
[ViewModelOnListProperty("Тип", 150)] [ViewModelOnListProperty("Тип", 150)]
public string AccessTypeTitle public string AccessTypeTitle => AccessType switch
{ {
get AccessType.Delete => "Полные права",
{ AccessType.Change => "Просмотр, Редактирование",
switch (AccessType) AccessType.View => "Просмотр",
{ _ => "Неопределено",
case AccessType.Delete: };
return "Полные права";
case AccessType.Change:
return "Просмотр, Редактирование";
case AccessType.FullView:
return "Просмотр";
case AccessType.SimpleView:
return "Частичный просмотр";
default:
return "Неопределено";
}
}
}
public override string ToString() => $"{RoleName}-{AccessOperationTitle}({AccessTypeTitle})"; 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 }, if (!manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = manager.User },
AccessOperation.Администрирование, AccessType.SimpleView, "Администрирование"))) AccessOperation.Администрирование, AccessType.View, "Администрирование")))
{ {
return null; return null;
} }
@ -42,7 +42,7 @@ namespace SecurityWindowsDesktop
foreach (var cntrl in _controls) foreach (var cntrl in _controls)
{ {
if (manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = manager.User }, 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 list.Add(new WindowDesktopExtensionControlModel
{ {