From 8ad72cd50d2e7b573ee801d95f2b6cd86519a91d Mon Sep 17 00:00:00 2001 From: kotcheshir73 Date: Sun, 28 Mar 2021 10:23:26 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=D0=B8=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?Security=20=D0=BA=20=D0=B4=D0=B5=D1=81=D0=BA=D1=82=D0=BE=D0=BF?= =?UTF-8?q?=D0=BD=D0=BE=D0=BC=D1=83=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/DatabaseCore/SecurityManager.cs | 126 +++++++++- .../ModelTools/Interfaces/ISecurityManager.cs | 40 ++++ .../DepartmentPortalDesctop.csproj | 1 - .../DepartmentPortalDesctop/FormEnter.cs | 5 +- .../DepartmentPortalDesctop/Program.cs | 2 +- .../net5.0/DatabaseCore.dll | Bin 53760 -> 60416 bytes .../net5.0/ModelTools.dll | Bin 21504 -> 22016 bytes .../net5.0/SecurityBusinessLogic.dll | Bin 19456 -> 13312 bytes .../net5.0/SecurityImplementation.dll | Bin 22016 -> 20480 bytes .../BindingModels/UserBindingModels.cs | 7 - .../BusinessLogics/UserManager.cs | 223 ------------------ .../Implementations/UserService.cs | 29 --- .../SecurityWindowDesktopExtension.cs | 4 +- .../net5.0-windows/DesktopTools.dll | Bin 67584 -> 69120 bytes .../net5.0-windows/ModelTools.dll | Bin 21504 -> 22016 bytes .../net5.0-windows/SecurityBusinessLogic.dll | Bin 19456 -> 13312 bytes .../net5.0-windows/SecurityWindowsDesktop.dll | Bin 11264 -> 11264 bytes 17 files changed, 168 insertions(+), 269 deletions(-) delete mode 100644 DepartmentPortal/Security/SecurityBusinessLogic/BusinessLogics/UserManager.cs diff --git a/DepartmentPortal/Common/DatabaseCore/SecurityManager.cs b/DepartmentPortal/Common/DatabaseCore/SecurityManager.cs index 8380231..26eaf17 100644 --- a/DepartmentPortal/Common/DatabaseCore/SecurityManager.cs +++ b/DepartmentPortal/Common/DatabaseCore/SecurityManager.cs @@ -4,20 +4,56 @@ using ModelTools.Interfaces; using ModelTools.Models; using SecurityBusinessLogic.BusinessLogics; using System; +using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; +using System.Threading.Tasks; namespace DatabaseCore { public class SecurityManager : ISecurityManager { + private readonly int _countDayToBanned = 3; + + private readonly int _countMaxAttempt = 3; + + private static SecurityManager _securityManager; + + private static readonly object _lockObject = new(); + + private SecurityManager() { } + + /// + /// Singleton для класса + /// + public static SecurityManager GetInstance + { + get + { + if (_securityManager == null) + { + lock (_lockObject) + { + _securityManager = new SecurityManager(); + } + } + return _securityManager; + } + } + + public Guid? User { get; set; } + + public List Roles { get; set; } + public string ErrorMessage { get; set; } + public bool IsAuth => User != null; + public bool CheckAccess(SecurityManagerCheckAccessModel model) { using var context = DatabaseManager.GetContext; - Access access; + Access access = null; if (model != null) { // простой просмотр возможен @@ -26,9 +62,9 @@ namespace DatabaseCore return true; } // если не указан идентификатор пользователя, то смотрим, может он авторизован - if (!model.Model.UserId.HasValue && UserManager.GetInstance.User != null) + if (!model.Model.UserId.HasValue && User.HasValue) { - model.Model.UserId = UserManager.GetInstance.UserId; + model.Model.UserId = User.Value; } var roles = context.UserRoles.Where(x => x.UserId == model.Model.UserId).Select(x => x.Role).OrderByDescending(x => x.RolePriority).ToList(); @@ -39,9 +75,9 @@ namespace DatabaseCore } access = context.Accesses.FirstOrDefault(a => a.AccessOperation == model.Operation && roles.Contains(a.Role)); } - else + else if (Roles != null) { - access = context.Accesses.FirstOrDefault(a => a.AccessOperation == model.Operation && UserManager.GetInstance.Roles.Contains(a.RoleId)); + access = context.Accesses.FirstOrDefault(a => a.AccessOperation == model.Operation && Roles.Contains(a.RoleId)); } if (access != null) { @@ -121,5 +157,85 @@ namespace DatabaseCore transaction.Commit(); } + + public async Task LoginAsync(string login, string password) + { + var passwordHash = GetPasswordHash(password); + using var context = DatabaseManager.GetContext; + var user = context.Users.FirstOrDefault(x => x.UserName == login && x.PasswordHash == passwordHash); + await CheckUserAsync(login, user, context); + user.DateLastVisit = DateTime.Now; + user.CountAttempt = 0; + await context.SaveChangesAsync(); + + User = user.Id; + Roles = context.UserRoles.Where(x => x.UserId == user.Id).Select(x => x.RoleId).ToList(); + } + + public async Task LogoutAsync() + { + await Task.Run(() => + { + User = null; + Roles = null; + }); + } + + public async Task ChangePassword(string login, string oldPassword, string newPassword) + { + using var context = DatabaseManager.GetContext; + var user = context.Users.FirstOrDefault(x => x.UserName == login && x.PasswordHash == GetPasswordHash(oldPassword)); + await CheckUserAsync(login, user, context); + user.PasswordHash = GetPasswordHash(newPassword); + await context.SaveChangesAsync(); + } + + /// + /// Получение хеша пароля + /// + /// + /// + private static string GetPasswordHash(string password) => Encoding.ASCII.GetString((new MD5CryptoServiceProvider()).ComputeHash(Encoding.ASCII.GetBytes(password))); + + /// + /// Проверка пользователя при авторизации и при смене пароля + /// + /// + /// + /// + /// + private async Task CheckUserAsync(string login, User user, DatabaseContext context) + { + if (user == null) + { + user = context.Users.FirstOrDefault(x => x.UserName == login); + if (user != null) + { + user.CountAttempt++; + if (user.CountAttempt > _countMaxAttempt) + { + user.IsBanned = true; + user.DateBanned = DateTime.Now; + await context.SaveChangesAsync(); + + throw new Exception($"Введен неверный логин/пароль? учетная запись заблоикрована на {_countDayToBanned} дней(я)"); + } + } + + throw new Exception("Введен неверный логин/пароль"); + } + if (user.IsBanned) + { + if (user.DateBanned.Value.AddDays(_countDayToBanned) > DateTime.Now) + { + user.IsBanned = false; + await context.SaveChangesAsync(); + } + else + { + throw new Exception("Пользователь заблокирован"); + } + } + } } } \ No newline at end of file diff --git a/DepartmentPortal/Common/ModelTools/Interfaces/ISecurityManager.cs b/DepartmentPortal/Common/ModelTools/Interfaces/ISecurityManager.cs index 60d5726..169e44b 100644 --- a/DepartmentPortal/Common/ModelTools/Interfaces/ISecurityManager.cs +++ b/DepartmentPortal/Common/ModelTools/Interfaces/ISecurityManager.cs @@ -1,9 +1,27 @@ using ModelTools.Models; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; namespace ModelTools.Interfaces { public interface ISecurityManager { + /// + /// Аутентифицированный пользователь + /// + public Guid? User { get; set; } + + /// + /// Список ролей аутентифицированного пользователь + /// + public List Roles { get; set; } + + /// + /// Выполнена ли аутентификация + /// + public bool IsAuth { get; } + /// /// Сообщение с причиной не получения доступа /// @@ -20,5 +38,27 @@ namespace ModelTools.Interfaces /// Проверка наличия старотвых данных для работы с ситемой /// void CheckStartDataSource(); + + /// + /// Аутентификация пользователя + /// + /// + /// + /// + Task LoginAsync(string login, string password); + + /// + /// Выход из системы + /// + /// + Task LogoutAsync(); + + /// + /// Смена пароля + /// + /// + /// + /// + Task ChangePassword(string login, string oldPassword, string newPassword); } } \ No newline at end of file diff --git a/DepartmentPortal/DepartmentPortalDesctop/DepartmentPortalDesctop.csproj b/DepartmentPortal/DepartmentPortalDesctop/DepartmentPortalDesctop.csproj index ced7a4a..f35c2cf 100644 --- a/DepartmentPortal/DepartmentPortalDesctop/DepartmentPortalDesctop.csproj +++ b/DepartmentPortal/DepartmentPortalDesctop/DepartmentPortalDesctop.csproj @@ -16,7 +16,6 @@ - diff --git a/DepartmentPortal/DepartmentPortalDesctop/FormEnter.cs b/DepartmentPortal/DepartmentPortalDesctop/FormEnter.cs index 77a5c01..b81a362 100644 --- a/DepartmentPortal/DepartmentPortalDesctop/FormEnter.cs +++ b/DepartmentPortal/DepartmentPortalDesctop/FormEnter.cs @@ -1,5 +1,7 @@ using DesktopTools.BusinessLogics; +using ModelTools.BusinessLogics; using ModelTools.Extensions; +using ModelTools.Interfaces; using SecurityBusinessLogic.BusinessLogics; using System; using System.Collections.Generic; @@ -30,7 +32,8 @@ namespace DepartmentPortalDesctop } try { - Task.WaitAll(Task.Run(async () => await UserManager.GetInstance.LoginAsync(textBoxLogin.Text, textBoxPassword.Text))); + var securityManager = UnityContainerConfigurator.Resolve(); + Task.WaitAll(Task.Run(async () => await securityManager.LoginAsync(textBoxLogin.Text, textBoxPassword.Text))); DialogResult = DialogResult.OK; Close(); } diff --git a/DepartmentPortal/DepartmentPortalDesctop/Program.cs b/DepartmentPortal/DepartmentPortalDesctop/Program.cs index 1f9d016..472ce00 100644 --- a/DepartmentPortal/DepartmentPortalDesctop/Program.cs +++ b/DepartmentPortal/DepartmentPortalDesctop/Program.cs @@ -27,7 +27,7 @@ namespace DepartmentPortalDesctop var form = new FormEnter(); - if (form.ShowDialog() == DialogResult.OK && UserManager.GetInstance.IsAuth) + if (form.ShowDialog() == DialogResult.OK && securityManager.IsAuth) { Application.Run(UnityContainerConfigurator.Resolve()); } diff --git a/DepartmentPortal/ImplementationExtensions/net5.0/DatabaseCore.dll b/DepartmentPortal/ImplementationExtensions/net5.0/DatabaseCore.dll index d5e531516ad65f17b96b58fad5f32a48ce3f01b5..626cb557aa662ceb87243583d27339f5b973df35 100644 GIT binary patch literal 60416 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 literal 53760 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 SabKGMf4UWacm7@W!2bsWm*@Hb diff --git a/DepartmentPortal/ImplementationExtensions/net5.0/ModelTools.dll b/DepartmentPortal/ImplementationExtensions/net5.0/ModelTools.dll index 78f408eef37ed8224fd753544bcf79240236de62..71032a3511968ab4ae3ec72fa4a245aaafb98b80 100644 GIT binary patch delta 8205 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 delta 7793 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 diff --git a/DepartmentPortal/ImplementationExtensions/net5.0/SecurityBusinessLogic.dll b/DepartmentPortal/ImplementationExtensions/net5.0/SecurityBusinessLogic.dll index 469e9d44e6142f8ade88795f882dac7d3be5f33d..e13afce780118ad68a2befbe9b564cc725bebd8d 100644 GIT binary patch literal 13312 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 F_-}V{6Ndl* literal 19456 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 diff --git a/DepartmentPortal/ImplementationExtensions/net5.0/SecurityImplementation.dll b/DepartmentPortal/ImplementationExtensions/net5.0/SecurityImplementation.dll index c87212dde49a9cf81277e3f1bbb0c5b7c0e157ae..9103c80d483440673100fdab8ca21d2c1711808e 100644 GIT binary patch delta 3372 zcmcJSe^6A{7018#zPIrVtV_!BD_P0(mHQd=rjv>7Aq zq9%+fnv{7Y5sQsflaa*HIIFa%(V5tc!8Vv!e>BdJF~xCWOJg*#Q-9R<+`G%fZToNE z%>BIcJ?GqWf4sME->cil>UObTY)O0cC+)WpJ1!$F#lv!d$H^h0&a0J;Z_W2PmB1Y7 zr~~$Djj2iYF2I(01yJUs@@!`z%dmQDTT&I=j2C9`4@wAfnV~-LgRp}PzbP+tnNDIbfu*_KQx9q*B^De zLlY?Gb$^uYv<3${*VB@mt_0h8Y*@f+C)%M&)F(S2HY7TCf`gr!VSXo++6~6Z4^3nzNPAj&2^GQ~(ubUn zGc&?VNF`J2Pi+J>ndPRoj@lzJJ&?|{S;{Z-rcwjy4e68D@LzhbTVSqBa-sffcRvia zr2l#Sj7y-v)nW=<)+Ki;9#I@3{bBq_iJP8Q!@_Cfg4>62{IJ`?6-ax5*kSqb8={2| z#TF|Om3Et!h#t>*JAki^T2BD0aLM$c%D89=l%v%U_<~7JplSIasG1Mys?H{2BCfg4 z+dhn?d>_KMnGE++;Z-WUNIP#QquzXuCt@Ml0{hU&1ooS)h7Xyl+elTkSoPYidf9GS z^ht_Z80+3bH7nUNVxHnq#d2aIZkcUbGLE2K6ZlnFlQVS@1IRUNJr-u0L5~1ayK;le z=zC_189)!MRp276FMvUm8GuO?_$@^RKBde6vQ&lbnyk>RGG9ln=MkLamrM&TnpQG8 zvBQ;&MRvR9L(m9cqz$=iuccW($z`{9s8AwqD$inZoVK)9O>wUwr?P~0!om?_I1Rsn zwq4+^tJO%xBu_i7=@#CwExe3>SZR2Jh8%|XRQ|hE$A>S4-0(jWlQDyzqt&OnkCuCU z@X)5o8!18EPmFFgMz`TI&tfxI*;0+?O&+N<6*FSWRO$|k#=J`9P%P4wox;L(Mw1Yz zGq%T=2b;AhJL=!1>^(8c=w4+<{ri-CFh&_|S9a8YMA;`|l+oWQ`-mt_k!!ii>@e*e z!)7JxADU0U4Ti0;U`YQ!Fno{}P0iQO2#(OusOn^AgoaRNRHag;jwQpTidJ!M1eKf7$?l1M06iC_ zN~P2U6wm{)uZ$msaY{ZczlqI@Qx!@zK2+h>4L`mg7hC;+3j6Wg1JaMpacXOvdPS+e zqOEbUx8hVJP92L=??0%*=u)z;=%ojP=!sLkaq3o_x*w+u`nLf3Y9=Way%c^t9H*X^ z5A8bR|3+t8Zbo>%o52rxa|ekQGKmSuRUD&Os92&nS8<`@$3%hEEQOC(T!N*_)6AZ= zUqUlVEeCCEg0>SK%@=7v2TD6{XrD9%Ry!%U`iq5nr-* z@%8+w+0Bb(%`gqQ&DBkTQTAWSB?oBZr(Az0&w2AMaTmYK5AroUsCB6Aorx@)p^WVL zS|`8lsUXg>pVelf*nV02L@h(EzD;Y!BI~4f13T?9eoe7L?MDUbUF+Cq$`h`@S)Q%m zR;8D#(p9STa#gMw1=dF0uU4=&wwbp6H~j`*XMUyE;#+R!dLBb;o8RVTw!@k+*-CO{ zGI`0is%VpnrZUjqFp(Z`g-qTzEo!ViVKrDwY_KlRyRN0Inzm~pd&el_`_zz`>^PNM zsk$9f-HxeVhg7c-@W3=iAc@`uM_>?gi0K$Z%tAHsF*Fdz;#Fc1b`xhP|2$$3!cSqp zp)tvH#UjOJiklU8E1p#BQPjA~S1eLornp&gx8g~~9z{)4`HDq~KgFBu3frMYoXpV! z*cxZz=q&9CvBX(DIw@nZ33~JW=GY`&(4>mKto8YQ&fB9iR$kd>jyO~@`owOLd!IK&b1js%mMzT%uK919C>2qS~lvbf7ZSY zHmg+5emk{u^lfoYelNrhxlKvbGN@J2=R{SBbAMJ^LXT%r9bbHKQbW)g-E`oJ%gLGD zFe>Iu=yOu-EcdIda>a?8pXco;Njw_+9Fe8ZOFN}8HNa0*I<7f$Bfio*8vi^$;xD_- I8gq<)1F4vg8~^|S delta 4167 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 diff --git a/DepartmentPortal/Security/SecurityBusinessLogic/BindingModels/UserBindingModels.cs b/DepartmentPortal/Security/SecurityBusinessLogic/BindingModels/UserBindingModels.cs index daf0b13..41063ef 100644 --- a/DepartmentPortal/Security/SecurityBusinessLogic/BindingModels/UserBindingModels.cs +++ b/DepartmentPortal/Security/SecurityBusinessLogic/BindingModels/UserBindingModels.cs @@ -10,13 +10,6 @@ namespace SecurityBusinessLogic.BindingModels /// public class UserGetBindingModel : GetBindingModel { - public bool? IsBanned { get; set; } - - public string Login { get; set; } - - public string Password { get; set; } - - public List LecturerIds { get; set; } } /// diff --git a/DepartmentPortal/Security/SecurityBusinessLogic/BusinessLogics/UserManager.cs b/DepartmentPortal/Security/SecurityBusinessLogic/BusinessLogics/UserManager.cs deleted file mode 100644 index 491c729..0000000 --- a/DepartmentPortal/Security/SecurityBusinessLogic/BusinessLogics/UserManager.cs +++ /dev/null @@ -1,223 +0,0 @@ -using ModelTools.BusinessLogics; -using SecurityBusinessLogic.BindingModels; -using SecurityBusinessLogic.ViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; - -namespace SecurityBusinessLogic.BusinessLogics -{ - /// - /// Менеджер по работе с пользователем системы - /// - public class UserManager - { - private readonly int _countDayToBanned = 3; - - private readonly int _countMaxAttempt = 3; - - private readonly RoleBusinessLogic _roleBusinessLogic; - - private readonly UserBusinessLogic _userBusinessLogic; - - private static UserManager _userManager; - - private static readonly object _lockObject = new(); - - private UserManager() - { - _roleBusinessLogic = UnityContainerConfigurator.Resolve(); - _userBusinessLogic = UnityContainerConfigurator.Resolve(); - } - - public static UserManager GetInstance - { - get - { - if (_userManager == null) - { - lock (_lockObject) - { - _userManager = new UserManager(); - } - } - - return _userManager; - } - } - - /// - /// Аутентифицированный пользователь - /// - public UserViewModel User { get; private set; } - - /// - /// Список ролей аутентифицированного пользователь - /// - public List Roles { get; private set; } - - /// - /// Сообщение об ошибке - /// - public string ErrorMessage { get; private set; } - - /// - /// Идентификатор аутентифицированного пользователь - /// - public Guid? UserId => User?.Id; - - /// - /// Выполнена ли аутентификация - /// - public bool IsAuth => User != null; - - /// - /// Аутентификация пользователя - /// - /// - /// - /// - public async Task LoginAsync(string login, string password) - { - await Task.Run(() => - { - UserSetBindingModel model; - var passwordHash = GetPasswordHash(password); - var user = _userBusinessLogic.GetElement(new UserGetBindingModel - { - Login = login, - Password = passwordHash, - SkipCheck = true - }); - - if (user == null) - { - if(_userBusinessLogic.Errors.Count > 0) - { - throw new Exception(_userBusinessLogic.Errors[0].Message); - } - - user = _userBusinessLogic.GetElement(new UserGetBindingModel - { - Login = login, - IsBanned = true, - SkipCheck = true - }); - if (user != null) - { - user.CountAttempt++; - if (user.CountAttempt > _countMaxAttempt) - { - user.IsBanned = true; - user.DateBanned = DateTime.Now; - } - - model = GetSetBindingModel(user); - model.Password = passwordHash; - _userBusinessLogic.Update(model); - } - - if (_userBusinessLogic.Errors.Count > 0) - { - throw new Exception(_userBusinessLogic.Errors[0].Message); - } - - throw new Exception("Введен неверный логин/пароль"); - } - if (user.IsBanned) - { - if (user.DateBanned.Value.AddDays(_countDayToBanned) > DateTime.Now) - { - user.IsBanned = false; - } - else - { - throw new Exception("Пользователь заблокирован"); - } - } - - user.DateLastVisit = DateTime.Now; - user.CountAttempt = 0; - - model = GetSetBindingModel(user); - model.Password = passwordHash; - _userBusinessLogic.Update(model); - - User = user; - Roles = _roleBusinessLogic.GetList(new RoleGetBindingModel { UserId = User.Id }).List.Select(x => x.Id).ToList(); - }); - } - - /// - /// Выход из системы - /// - /// - public async Task LogoutAsync() - { - await Task.Run(() => - { - User = null; - Roles = null; - }); - } - - /// - /// Смена пароля - /// - /// - /// - /// - public void ChangePassword(string login, string oldPassword, string newPassword) - { - var user = _userBusinessLogic.GetElement(new UserGetBindingModel - { - Login = login, - Password = GetPasswordHash(oldPassword), - SkipCheck = true - }); - if (user == null) - { - throw new Exception("Введен неверный логин/пароль"); - } - if (user.IsBanned) - { - throw new Exception("Пользователь забаннен"); - } - var model = GetSetBindingModel(user); - model.Password = GetPasswordHash(newPassword); - _userBusinessLogic.Update(model); - } - - /// - /// Получение хеша пароля - /// - /// - /// - public static string GetPasswordHash(string password) => Encoding.ASCII.GetString((new MD5CryptoServiceProvider()).ComputeHash(Encoding.ASCII.GetBytes(password))); - - /// - /// Получение модели для сохранения из представления - /// - /// - /// - private static UserSetBindingModel GetSetBindingModel(UserViewModel model) - { - return new UserSetBindingModel - { - Id = model.Id, - Login = model.Login, - LecturerId = model.LecturerId, - StudentId = model.StudentId, - EmployeeId = model.EmployeeId, - Avatar = model.Avatar, - IsBanned = model.IsBanned, - DateBanned = model.DateBanned, - CountAttempt = model.CountAttempt, - DateLastVisit = model.DateLastVisit - }; - } - } -} \ No newline at end of file diff --git a/DepartmentPortal/Security/SecurityImplementation/Implementations/UserService.cs b/DepartmentPortal/Security/SecurityImplementation/Implementations/UserService.cs index 613e2d9..1ef49a4 100644 --- a/DepartmentPortal/Security/SecurityImplementation/Implementations/UserService.cs +++ b/DepartmentPortal/Security/SecurityImplementation/Implementations/UserService.cs @@ -2,7 +2,6 @@ using DatabaseCore.Models.Security; using ModelTools.BusinessLogics; using ModelTools.Enums; -using ModelTools.Extensions; using ModelTools.Models; using SecurityBusinessLogic.BindingModels; using SecurityBusinessLogic.Interfaces; @@ -99,35 +98,7 @@ namespace SecurityImplementation.Implementations return OperationResultModel.Success(Mapper.MapToClass(entity)); } - if (model.Login.IsNotEmpty() && model.Password.IsNotEmpty()) - { - var entity = context.Users.FirstOrDefault(x => x.UserName == model.Login && x.PasswordHash == model.Password); - if (entity == null) - { - return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); - } - return OperationResultModel.Success(Mapper.MapToClass(entity)); - } - - if (model.Login.IsNotEmpty() && model.IsBanned.HasValue) - { - var entity = context.Users.FirstOrDefault(x => x.UserName == model.Login && x.IsBanned == model.IsBanned.Value); - if (entity == null) - { - return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); - } - return OperationResultModel.Success(Mapper.MapToClass(entity)); - } - var query = context.Users.Where(x => !x.IsDeleted).AsQueryable(); - if (model.IsBanned.HasValue) - { - query = query.Where(x => x.IsBanned == model.IsBanned.Value); - } - if (model.LecturerIds != null) - { - query = query.Where(x => x.LecturerId.HasValue && model.LecturerIds.Contains(x.LecturerId.Value)); - } query = query.OrderBy(x => x.UserName); diff --git a/DepartmentPortal/Security/SecurityWindowsDesktop/SecurityWindowDesktopExtension.cs b/DepartmentPortal/Security/SecurityWindowsDesktop/SecurityWindowDesktopExtension.cs index cf83284..1b58e7e 100644 --- a/DepartmentPortal/Security/SecurityWindowsDesktop/SecurityWindowDesktopExtension.cs +++ b/DepartmentPortal/Security/SecurityWindowsDesktop/SecurityWindowDesktopExtension.cs @@ -20,7 +20,7 @@ namespace SecurityWindowsDesktop return null; } - if (!manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = UserManager.GetInstance.UserId }, + if (!manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = manager.User }, AccessOperation.Администрирование, AccessType.SimpleView, "Администрирование"))) { return null; @@ -40,7 +40,7 @@ namespace SecurityWindowsDesktop foreach (var cntrl in _controls) { - if (manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = UserManager.GetInstance.UserId }, + if (manager.CheckAccess(new SecurityManagerCheckAccessModel(new AccessBindingModel { UserId = manager.User }, cntrl.AccessOperation, AccessType.SimpleView, cntrl.Title))) { list.Add(new WindowDesktopExtensionControlModel diff --git a/DepartmentPortal/WindowDestopExtensions/net5.0-windows/DesktopTools.dll b/DepartmentPortal/WindowDestopExtensions/net5.0-windows/DesktopTools.dll index 64a76a6e1c09caf4cd485b420ebe8f663357f5c0..12937ff967759320a4c164e86662f26899ffa5cc 100644 GIT binary patch delta 14381 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 diff --git a/DepartmentPortal/WindowDestopExtensions/net5.0-windows/ModelTools.dll b/DepartmentPortal/WindowDestopExtensions/net5.0-windows/ModelTools.dll index 78f408eef37ed8224fd753544bcf79240236de62..71032a3511968ab4ae3ec72fa4a245aaafb98b80 100644 GIT binary patch delta 8205 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 delta 7793 zcmb7}d3+RAzQxb2uBzVBo$d|^TZkRjKmb94D4-^?1SEziI}%MqWr>0W7{J8o&U=84 zih>Oc>L|$!D(=JNDYz$!3vPqYeZiNgqoad^C@v#W=iFak8DyM4Uggu@KIeDu{oSRy zyKYsIcdO)fwf@SU>yO+02+Yxjp7Ed>0+cb}ri16#Y`AlJI8*~n)`282#IqqkE29y} zpzpL0n3~GB2Bv1Ieu4Ru7>e^%mbyw6s`AtWs-HSL^`7e4wS*b;F@Y}&4)zZQ3Pu4c z6`eeyxx(t@iL+xj;0|<<6D;gw74!iDwf%uht%BZ^iw8HSoLlV7WvrDIiiQTRKs2zp zHdP#0p=wjR0tr=?Iw`nA4NrXE+C_^jxMb zaDc)BPPVY`fY}AdguN0zL&8?N=J{;Xcfjcd<*5(DzfrSNi!!^CS7wfl&eLmV*#!&a z-6^O^?aLhIUu2?}rn*Lk`Ij2EJT)zHcJWGaG5nC71$1`{>P_io`hCESR>1}AjLYRI zNY}KNUZ_W$u9j19S?c3R|5K9PfL^}__Vayz4)v5}wF?%_V^6@FLwPzZ#->fdx5I!4 zW4%hJO&rU2UlGevXGZ%C8co-gFD?g|2y^&iM;Ol6t$c;~%H*pLUlUSI(H@EK1BzOY z@;UFeu#4+_numomy>;O%yw651Zt?!w@8W%5R)&j_!hK$?zZ2dkkt;;+jg$sm^pR{f zGq|`|7*VCc08YX#W?LrtD^QwX)w42mgZV+t4_(d2GO{wl@J6@#WB5Fz*)_bC-4Bq) zZ$z^)a~)Wx?vmX@`J9spX%t+@!`^7!o^*g zdLGT}(#0sI=!QDydc@E>xYgecZBgC04;$y9lk+_5{1_^TxHwKy+~vO>J+YZXad85t zk%Kcr8{8c1%kZ$~Q&Ao1$ow{%gW(ciZC|0kYFMHH1(hHo_$V+tbGWwRxd7dIQV;=1~E z%{f>>m#s$I3b%SrrheQrnygjDj4b#3mU^9MEOoP0N+trHw-}maO`zwhf6rBzp4^o67TMBC^Zp#o+eJr2KO57L52em)5}6~VrJ~mgcMF$FoqdUH z-C&S}szoOy#T&xI64@gux=DlML~oJOIw{>H@o$7F$+JT06bYN8&K!yF6@8Y}JYBSt zozUISm2?M%U!)sLr4K~ENd437cSI-I)02+~Lyp#Y-bqK+W__fXkyk^SgM*sgy_!K= z(@Xwz3QE);xUR2x?n$6G-Uz-$4vxK!q1fqYu8eAKAfvc7G?~q|SX0RUYC4%MJl%61 zb+x70DyJ!Z;=U36jPCm@TG`i7MjyTe;Tv3g)qRrg3lM zV%<^Nb*Ts|el-`Gvcl+Ox?1B-iaK<4#*K^C+8+G3aploEx@*!-ve?)ZM*_M-s19Z0 zR#SD8y~eh2k8#`VtLPput~~NFuegtiYw*pAJj!3QXH3~gk@dD0e>PXNPsoSmf zWd-)woe(gtN8ly8EaM&yzG`QqyK#GhZ_)MEF2RO7-T$+5FwhjXxF6CDH?B*pp1*ac z7}qNnp&OreoYSXv7c4Pl`lRJzm2vu{<>J4L%MVRP4_swjVaTCNiA${YC7pWyw%=q5 zuW}-E+lDS43|?c`HyqCzm*-tjZpNK>$T}6*8241>Nar+cACOMko;ikY zHx~fdfR$Xt)9_B(b(tP6bBfU+ZnN)-PzBwjbXRQ9lmSXi$RVQGbDRbO<-fe6$F3XM3-D2Fk>~JD( zGwyHfa3bzA?wpKzZb)_-SCbK;Ye_o}W{WckiT6$6e0EWePmNo_F3RzxaXQUp95zm; znGAcdEI!k0bt;gTcD~C4^*9@Sjr(mNLU+7zg-(Z>f)U1zbZVR_C{Cm;)7U5vD;I8-h*s+5+sxfqZ^$SebNtafJb)A3l=MzgDoo*CoU`dxAyvaeNQ(H2WU+U&R zb)Q}*O$#sbMor;pt=B{06-V>FgqWiT@&DENTqg_PF`Wl>89M3F8P-bazsEcLk%)zf z4zK?|Z;)<0$<@V|%Nd;{DfasP&_6;^(&0U(*7;nuV-U&o4|uY%l&W+-ZX zy()sf_LV_j)qBHs1~8&8IYrQynlfIfrjz=*UIu+Ve-IZr3)Mt5#;&D47~ZbVQaio( zs(jTJc|)Y-#{eP+F^_PE~({T{7*kaPS) z5}vM7>38gM5qv1dxgH4c`-JT zm*Pfp8Mcxuv5n-XhD_pKay6RCE3wOy@Nu?}(yYf5Nsf!qxbH`vd@N4|g%xfe0=RdgobL@xO*@@-!N zZRkt$SDEpCnepc`*Fz{|yhFN&(&=oa)A^K6m!XD`5jEVlFinjl7m#t@HP7|r8`j`Y zZhsE*EAmgC9PeNRSvnY5=;97WcjS|aUMS{UAtsW;kRV6lI&utdBq!l^a*D*yA&Vt- ziJ|VGT68tEPKs_Y)R9KfO<0PD-6o@Te49jCFgL*wwMs#&q}VM5dxUKgZ#UGl`J#(Oml*2OD$&)3Ix<)3*(W8^U|53$$0(-BP*-gc-D;>KZKC^IdLB<&b@*Sm z&C)~pKr}pBdpvd6@5V*<5?w61N|+Qj3R{G**(%|Q>o-rauu7N|HVRvWZNlD;?tZMW z%9Ys&8-*>d&eJA@SL?X2SXd=&^2v$t>Cz^jo>-z)Oskl7(e0vJ{kl@CUsq}u-7Z=M zbX)~=JYRIa=n~N-qN_z$i*69zAi7a>lcCPgk`U8ss6%a{+YNODLFv*^Iu@ND)Vf%7 ziJ^{EiLN%(k)-GbLmg=p-4smd)J>A8MMABHx>B2HWav6^VU;i`Y!S8z5t2H>VqulA zQP?7E6C$i@77MGwbIWOxVj6{QLS#xhVX?4Em=sRoFW@rl!y$}Tl`5e=;1h`}tf#E! ztVfN?LnX$v$m6Nc zAuV2QhEi9O79XzjK`G87Ena{0bK7dt;_uW5>I+B<7p3M7=v=uFr!Z1OT6|`C8ucR5 z!eVZe6t7Vw)U_Bxy_B?gR>x5BIdxV>K9Sg#%1&?W->|bbmGB?T6 zHm=|0DDyneO=!BYlu}RgtVq35SdzFJbAyVT`m3=;>Z~()_$W!A3!e;kG2VRm#3ib^_N2*H^D86ERBG7he$7ipKjv*7I`%j#@|RD}`?_=K zhZC;){m}L;JsPK`s>TmhYf{&b|54qXy1sODqB5Fna-ec!m2SYwL!K(|c8OKSDtpAL ztvr>dEDB$&I#y-nT0O!&!oDyIEd6rg&}9*&@(@ejV+T~M$`@xPPc*s1jw4p-#8s?1 z?1io$tG44RH`j?}^h-nb`rNjPkI;;{O9L)o#3DyDO3K`c?> zaBMlpQt69TrjipnCt4jTin9CcSn_6$!Mu3_D(s35`{E2PQCVPJW?)B@ab=NEvE^Zz zfgYt5tNf|cg8$H|B||D;W{#}D<~>JjIsds4=8c3ECcT{Gs;JkN^0<{9y_^$>#q|&< zv*4y9ZbYF+9vm)KvOOHJJh4^$OMccvtUB6qLG$>(o^*)kBiSyk4hAF2%F9M<6+;Jo zUX>k9HYgwSCmWiZCps#}N z_oY?yon>K_Q04>C7DWBg&7;QlFmLGg7hn-nV;Bj+7?9 z?A|hB@2=^o-0~$SnBeU#Ca6f8d_oHS2 diff --git a/DepartmentPortal/WindowDestopExtensions/net5.0-windows/SecurityBusinessLogic.dll b/DepartmentPortal/WindowDestopExtensions/net5.0-windows/SecurityBusinessLogic.dll index 469e9d44e6142f8ade88795f882dac7d3be5f33d..e13afce780118ad68a2befbe9b564cc725bebd8d 100644 GIT binary patch literal 13312 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 F_-}V{6Ndl* literal 19456 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 diff --git a/DepartmentPortal/WindowDestopExtensions/net5.0-windows/SecurityWindowsDesktop.dll b/DepartmentPortal/WindowDestopExtensions/net5.0-windows/SecurityWindowsDesktop.dll index e88a3dd48482b6d8dee43a8032db0426da1dde6a..c68b34de24d428a1fcca23144c7229ab8320463a 100644 GIT binary patch delta 3850 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 delta 3956 zcmb7H3v5&875>hDukUqkLK54F6UfWKHgO(JLwJ<%YV+tw0(782A(U;(SOh6020Lua zP-?SM)QF8Xb6b%O1nSTz3~57|+H?YGE!jjFtYeRE?SLtpfFe}|G>SGDu=D@d2?-Mu zv*Pcb@BHVS|D5wbt`lDwU-`;QdWZk=i+$h8r$c=QSI~+CQHf)2EwC)HHBgagr4ssS zVk^apcho_B8W{x~Xq*CMf+~+1O*u`Zky2HbMoGnGZ_WWrhpcAcvnt{JfWT z%;R)9D{5iddGffA$HT=82r`>2nVoym*Uny!`K6IvhDss8e0JpS-Mi;A+{PWR3FL)? z(&nt`(aYh|%Rt;lfw%G6BH|)}$uSY)WwB7k#8V~EBDMSxp%SU)r<053hv3!e39(Lu zxFzL1++bZqIQ+&?sk9W48FD>1juk3bikwh|dgg{6kyB1VUdyORXG5v5`v#$f=1SAD zry-*ASn833A}2IoX*sy;Sz|JN5qeyzxmoFU&kWh9C!|LtHl|T~$2Mvyw{E0UlSVrw zciOm4&9-~vwR^*jlN0kk1{W`@le0u?8NziBQ&qi8^kJ)Nkj7jUA2YcV)bc;cIuW@% zrmBC8t*UBFRXL+o$#eC9suF#MH&q5ruJ^+f@rD1Vhy}?a__WI+_;8f>@WOEs^XT3l zUcvI{9*&JEV&Z5K@}d}5L}dK7Eeb`OIBvLEWhXZwZ(g2LEt8xvx{x8L*;b3BRZzFd zVoAbJF8UKYbVWKk*G4%dg!uN|&xh2%yalItcktx` z|AOUBykT&b`K-hqXURl9D`00?0r-}LlfUeQC5dy+VC*LjDa!^;*B)~k*sicuq&qWE zCyxQPiQ}4q4ccD~1KA3HC!~Bu;WDM!pyZz`%RLGYS!ITWI-}T`jwdmVEDY+A6br3p zvD1x=)CQ{_yG_L4##%I3UexQmQoMLW;SU^tWVun{O?+T_v7gb6qsF!r1M`JUbP>u7 zFI>tdU3qO#_^i?tDSTh~-qd8|RyDd(=^s_{PR5uQy-GD(;V0~1;edIa@sf6w-4>f4 zm6|W#EL;x9}QSn1LH9lW>fj>{Y^b7vfp-mOdHl8K>Zi zW0f@p-=kIR+oT^&;rfA>)dI+cCtku;#x>^pWbFC{?U4_k_7o zI59&pdj==w#}s{muZ%7pln1kl4>{qSc0UgCITiRbzX?W0D^msL@m_e(B)*&E@=av4 zP|BEzsS0Zp)+%gLxKv@Q!ZyUDX@?@084YyMel3noB;{^;o^~*o8%Dy*=^_)a6&hrnP3PflK)0KXDQtmg;U@lHs!|2DW#zn?I(5H+~#po)#EvFky zYRua#pL7t-MKIN%gEUhZ*rWobB{4u5)UT%LQaFM%I#nHH#e#hsrZ(tgab}TJ`R#MRZu5WHm5Nm=vb2@a z&+sW4Ov)=*-pER+|31s|N3@hvIkL(3QUSK}*UF*-cxXMg&<4Jm3oyjr&jyMz+sL`L zz3VH>qwSGIk84tfBn#TRnmVIhZJle{2VQsm!V#3Ci`zQe*0x8`)Y86YbEKoIdsI;$ z?(Ayo=p6WF&T(yEUfvHWv%CA{Uq|%j#@+?LsXMf3^XG}H`8%q)rSAAK%ZF@N{9SUz zf0^nd8j&aXbaKbvam7!&;%Cwg9|?E-{ltNSO805ahjfPz?7(X2m$+0=TzZ