1. проверка целосности данных для админа
2. смена типов доступа 3. вывод текстом типа доступа
This commit is contained in:
parent
3893ebdb19
commit
1e1896c68d
@ -3,7 +3,10 @@ using ModelTools.Enums;
|
|||||||
using ModelTools.Interfaces;
|
using ModelTools.Interfaces;
|
||||||
using ModelTools.Models;
|
using ModelTools.Models;
|
||||||
using SecurityBusinessLogic.BusinessLogics;
|
using SecurityBusinessLogic.BusinessLogics;
|
||||||
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace DatabaseCore
|
namespace DatabaseCore
|
||||||
{
|
{
|
||||||
@ -60,5 +63,63 @@ namespace DatabaseCore
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void CheckStartDataSource()
|
||||||
|
{
|
||||||
|
using var context = DatabaseManager.GetContext;
|
||||||
|
using var transaction = context.Database.BeginTransaction();
|
||||||
|
var role = context.Roles.FirstOrDefault(x => x.RoleName == "Администратор");
|
||||||
|
if (role == null)
|
||||||
|
{
|
||||||
|
role = new Role
|
||||||
|
{
|
||||||
|
RoleName = "Администратор",
|
||||||
|
RolePriority = 100
|
||||||
|
};
|
||||||
|
context.Roles.Add(role);
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
var accesses = context.Accesses.Where(x => x.RoleId == role.Id);
|
||||||
|
foreach (AccessOperation operation in Enum.GetValues(typeof(AccessOperation)))
|
||||||
|
{
|
||||||
|
if (!accesses.Any(x => x.AccessOperation == operation && x.AccessType == AccessType.Delete))
|
||||||
|
{
|
||||||
|
context.Accesses.Add(new Access
|
||||||
|
{
|
||||||
|
AccessOperation = operation,
|
||||||
|
AccessType = AccessType.Delete,
|
||||||
|
RoleId = role.Id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
context.SaveChanges();
|
||||||
|
|
||||||
|
var md5 = new MD5CryptoServiceProvider();
|
||||||
|
var user = context.Users.FirstOrDefault(x => x.UserName == "admin");
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
user = new User
|
||||||
|
{
|
||||||
|
UserName = "admin",
|
||||||
|
PasswordHash = Encoding.ASCII.GetString(md5.ComputeHash(Encoding.ASCII.GetBytes("qwerty"))),
|
||||||
|
CountAttempt = 0
|
||||||
|
};
|
||||||
|
context.Users.Add(user);
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
var link = context.UserRoles.FirstOrDefault(x => x.RoleId == role.Id && x.UserId == user.Id);
|
||||||
|
if (link == null)
|
||||||
|
{
|
||||||
|
context.UserRoles.Add(new UserRole
|
||||||
|
{
|
||||||
|
RoleId = role.Id,
|
||||||
|
UserId = user.Id
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
transaction.Commit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,27 +8,21 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Простой просомтр
|
/// Простой просомтр
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SimpleView = 0,
|
SimpleView = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Полный просомтр
|
/// Полный просомтр
|
||||||
/// </summary>
|
/// </summary>
|
||||||
FullView = 1,
|
FullView = 2,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление/Изменение
|
/// Добавление/Изменение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Change = 2,
|
Change = 4,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Удаление
|
/// Удаление
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Delete = 4,
|
Delete = 8
|
||||||
|
|
||||||
// TODO убрать
|
|
||||||
/// <summary>
|
|
||||||
/// Доступ к меню
|
|
||||||
/// </summary>
|
|
||||||
Menu = 8
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,5 +15,10 @@ namespace ModelTools.Interfaces
|
|||||||
/// <param name="model">Данные по операции</param>
|
/// <param name="model">Данные по операции</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
bool CheckAccess(SecurityManagerCheckAccessModel model);
|
bool CheckAccess(SecurityManagerCheckAccessModel model);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Проверка наличия старотвых данных для работы с ситемой
|
||||||
|
/// </summary>
|
||||||
|
void CheckStartDataSource();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,4 @@
|
|||||||
using DatabaseCore;
|
using DatabaseCore;
|
||||||
using DesktopTools.Controls;
|
|
||||||
using ModelTools.BusinessLogics;
|
using ModelTools.BusinessLogics;
|
||||||
using ModelTools.Interfaces;
|
using ModelTools.Interfaces;
|
||||||
using SecurityBusinessLogic.BusinessLogics;
|
using SecurityBusinessLogic.BusinessLogics;
|
||||||
@ -19,6 +18,9 @@ namespace DepartmentPortalDesctop
|
|||||||
UnityContainerConfigurator.PublishService<ISecurityManager, SecurityManager>();
|
UnityContainerConfigurator.PublishService<ISecurityManager, SecurityManager>();
|
||||||
UnityContainerConfigurator.InitServices();
|
UnityContainerConfigurator.InitServices();
|
||||||
|
|
||||||
|
var securityManager = UnityContainerConfigurator.Resolve<ISecurityManager>();
|
||||||
|
securityManager.CheckStartDataSource();
|
||||||
|
|
||||||
Application.SetHighDpiMode(HighDpiMode.SystemAware);
|
Application.SetHighDpiMode(HighDpiMode.SystemAware);
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -32,7 +32,25 @@ namespace SecurityBusinessLogic.ViewModels
|
|||||||
public AccessType AccessType { get; set; }
|
public AccessType AccessType { get; set; }
|
||||||
|
|
||||||
[ViewModelOnListProperty("Тип", 150)]
|
[ViewModelOnListProperty("Тип", 150)]
|
||||||
public string AccessTypeTitle => AccessType.ToString("G");
|
public string AccessTypeTitle
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
switch (AccessType)
|
||||||
|
{
|
||||||
|
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})";
|
||||||
}
|
}
|
||||||
|
@ -17,9 +17,9 @@ namespace SecurityBusinessLogic.ViewModels
|
|||||||
[MapConfiguration("Key")]
|
[MapConfiguration("Key")]
|
||||||
public string Key { get; set; }
|
public string Key { get; set; }
|
||||||
|
|
||||||
[ViewModelOnListProperty("Значение", 100)]
|
[ViewModelOnListProperty("Значение")]
|
||||||
[MapConfiguration("Value")]
|
[MapConfiguration("Value")]
|
||||||
public int Value { get; set; }
|
public string Value { get; set; }
|
||||||
|
|
||||||
public override string ToString() => Key;
|
public override string ToString() => Key;
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user