Commit 5968301d1f8b49d5fffaa98fe36eca9a0343f60f
1 parent
e0544dd6
v1.13.0.0
- user kezelés funkcióinak bővítése (init action blokkok)
Showing
4 changed files
with
350 additions
and
30 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs
| ... | ... | @@ -198,6 +198,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS |
| 198 | 198 | public static class CreateSuperuser { public const string KEY = "CSU"; } |
| 199 | 199 | public static class CreateAdminusers { public const string KEY = "CAU"; } |
| 200 | 200 | public static class DeleteUsers { public const string KEY = "DEU"; } |
| 201 | + public static class ExecuteInitAction{ public const string KEY = "EIA"; } | |
| 201 | 202 | } |
| 202 | 203 | } |
| 203 | 204 | public static class WebApplicationManager | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Membership.cs
| ... | ... | @@ -136,33 +136,41 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 136 | 136 | { |
| 137 | 137 | string rgnamelist = string.Join(",", MembershipDBContext.RoleGroups.Select(rg => rg.Name).ToArray()); |
| 138 | 138 | if (!string.IsNullOrWhiteSpace(rgnamelist)) { Assign.RoleGroupsToUsers(rgnamelist, username); } |
| 139 | - foreach (var rn in Roles.GetAllRoles()) | |
| 139 | + foreach (var rn in System.Web.Security.Roles.GetAllRoles()) | |
| 140 | 140 | { |
| 141 | - if (!Users.IsInRole(username, rn)) { Roles.AddUserToRole(username, rn); } | |
| 141 | + if (!Users.IsInRole(username, rn)) { System.Web.Security.Roles.AddUserToRole(username, rn); } | |
| 142 | 142 | } |
| 143 | 143 | } |
| 144 | 144 | else if (administrator) |
| 145 | 145 | { |
| 146 | - if (!Roles.IsUserInRole(username, Constants.ROLENAME_ADMINISTRATOR)) { Roles.AddUserToRole(username, Constants.ROLENAME_ADMINISTRATOR); } | |
| 147 | - if (!Roles.IsUserInRole(username, Constants.ROLENAME_ADMIN)) { Roles.AddUserToRole(username, Constants.ROLENAME_ADMIN); } | |
| 146 | + if (!System.Web.Security.Roles.IsUserInRole(username, Constants.ROLENAME_ADMINISTRATOR)) { System.Web.Security.Roles.AddUserToRole(username, Constants.ROLENAME_ADMINISTRATOR); } | |
| 147 | + if (!System.Web.Security.Roles.IsUserInRole(username, Constants.ROLENAME_ADMIN)) { System.Web.Security.Roles.AddUserToRole(username, Constants.ROLENAME_ADMIN); } | |
| 148 | 148 | } |
| 149 | 149 | |
| 150 | 150 | string[] selectedrolenames; |
| 151 | - if (rolenames != null) | |
| 151 | + if (rolenames != null && rolenames.Any()) | |
| 152 | 152 | { |
| 153 | - selectedrolenames = rolenames.Contains("*") ? Roles.GetAllRoles() : rolenames; | |
| 153 | + selectedrolenames = rolenames.Contains("*") ? System.Web.Security.Roles.GetAllRoles() : rolenames; | |
| 154 | 154 | if (selectedrolenames != null && selectedrolenames.Any()) |
| 155 | 155 | { |
| 156 | - foreach (var rname in selectedrolenames) { if (!Roles.IsUserInRole(username, rname)) { Roles.AddUserToRole(username, rname); } } | |
| 156 | + foreach (var rname in selectedrolenames) | |
| 157 | + { | |
| 158 | + if (string.IsNullOrWhiteSpace(rname)) { continue; } | |
| 159 | + if (!System.Web.Security.Roles.IsUserInRole(username, rname)) { System.Web.Security.Roles.AddUserToRole(username, rname); } | |
| 160 | + } | |
| 157 | 161 | } |
| 158 | 162 | } |
| 159 | 163 | string[] selectedrolegroupnames; |
| 160 | - if (rolegroupnames != null) | |
| 164 | + if (rolegroupnames != null && rolegroupnames.Any()) | |
| 161 | 165 | { |
| 162 | 166 | selectedrolegroupnames = rolegroupnames.Contains("*") ? RoleGroups.GetAllNames().ToArray() : rolegroupnames; |
| 163 | 167 | if (selectedrolegroupnames != null && selectedrolegroupnames.Any()) |
| 164 | 168 | { |
| 165 | - foreach (var rgname in selectedrolegroupnames) { if (!RoleGroups.IsUserInRoleGroup(username, rgname)) { Assign.RoleGroupsToUsers(rgname, username); } } | |
| 169 | + foreach (var rgname in selectedrolegroupnames) | |
| 170 | + { | |
| 171 | + if (string.IsNullOrWhiteSpace(rgname)) { continue; } | |
| 172 | + if (!RoleGroups.IsUserInRoleGroup(username, rgname)) { Assign.RoleGroupsToUsers(rgname, username); } | |
| 173 | + } | |
| 166 | 174 | } |
| 167 | 175 | } |
| 168 | 176 | return user; |
| ... | ... | @@ -172,24 +180,24 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 172 | 180 | public static void CreateAdminRolesAndUsers() |
| 173 | 181 | { |
| 174 | 182 | MembershipUser user; |
| 175 | - if (!Roles.RoleExists(Constants.ROLENAME_ADMINISTRATOR)) { Roles.CreateRole(Constants.ROLENAME_ADMINISTRATOR); } | |
| 176 | - if (!Roles.RoleExists(Constants.ROLENAME_ADMIN)) { Roles.CreateRole(Constants.ROLENAME_ADMIN); } | |
| 183 | + if (!System.Web.Security.Roles.RoleExists(Constants.ROLENAME_ADMINISTRATOR)) { System.Web.Security.Roles.CreateRole(Constants.ROLENAME_ADMINISTRATOR); } | |
| 184 | + if (!System.Web.Security.Roles.RoleExists(Constants.ROLENAME_ADMIN)) { System.Web.Security.Roles.CreateRole(Constants.ROLENAME_ADMIN); } | |
| 177 | 185 | |
| 178 | 186 | user = Membership.GetUser(Constants.USERNAME_ADMIN); |
| 179 | 187 | if (user == null) |
| 180 | 188 | { |
| 181 | 189 | user = Membership.CreateUser(Constants.USERNAME_ADMIN, Constants.PASSWORD_ADMIN); |
| 182 | 190 | } |
| 183 | - if (!Roles.IsUserInRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMINISTRATOR)) { Roles.AddUserToRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMINISTRATOR); } | |
| 184 | - if (!Roles.IsUserInRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMIN)) { Roles.AddUserToRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMIN); } | |
| 191 | + if (!System.Web.Security.Roles.IsUserInRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMINISTRATOR)) { System.Web.Security.Roles.AddUserToRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMINISTRATOR); } | |
| 192 | + if (!System.Web.Security.Roles.IsUserInRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMIN)) { System.Web.Security.Roles.AddUserToRole(Constants.USERNAME_ADMIN, Constants.ROLENAME_ADMIN); } | |
| 185 | 193 | |
| 186 | 194 | user = Membership.GetUser(Constants.USERNAME_ADMINISTRATOR); |
| 187 | 195 | if (user == null) |
| 188 | 196 | { |
| 189 | 197 | user = Membership.CreateUser(Constants.USERNAME_ADMINISTRATOR, Constants.PASSWORD_ADMINISTRATOR); |
| 190 | 198 | } |
| 191 | - if (!Roles.IsUserInRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMINISTRATOR)) { Roles.AddUserToRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMINISTRATOR); } | |
| 192 | - if (!Roles.IsUserInRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMIN)) { Roles.AddUserToRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMIN); } | |
| 199 | + if (!System.Web.Security.Roles.IsUserInRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMINISTRATOR)) { System.Web.Security.Roles.AddUserToRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMINISTRATOR); } | |
| 200 | + if (!System.Web.Security.Roles.IsUserInRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMIN)) { System.Web.Security.Roles.AddUserToRole(Constants.USERNAME_ADMINISTRATOR, Constants.ROLENAME_ADMIN); } | |
| 193 | 201 | } |
| 194 | 202 | #endregion CreateAdminRolesAndUsers |
| 195 | 203 | #region IsInRole public method |
| ... | ... | @@ -397,6 +405,109 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 397 | 405 | #endregion Remove methods |
| 398 | 406 | } |
| 399 | 407 | #endregion RoleGroups |
| 408 | + #region Roles | |
| 409 | + public static class Roles | |
| 410 | + { | |
| 411 | + #region Get methods | |
| 412 | + /// <summary> | |
| 413 | + /// Szerep lekérése az egyedi azonosítója alapján. | |
| 414 | + /// </summary> | |
| 415 | + /// <param name="id">A keresett funkció azonosítója.</param> | |
| 416 | + /// <returns>A kért szerepkör, egyébként null.</returns> | |
| 417 | + public static DAL.Role Get(Guid id) | |
| 418 | + { | |
| 419 | + return MembershipDBContext.Roles.FirstOrDefault(x => x.RoleId == id); | |
| 420 | + } | |
| 421 | + /// <summary> | |
| 422 | + /// Szerep lekérése az egyedi neve alapján. | |
| 423 | + /// </summary> | |
| 424 | + /// <param name="name">A keresett szerep egyedi neve.</param> | |
| 425 | + /// <returns>A kért szerep, egyébként null.</returns> | |
| 426 | + public static DAL.Role Get(string name) | |
| 427 | + { | |
| 428 | + return MembershipDBContext.Roles.FirstOrDefault(x => x.RoleName== name); | |
| 429 | + } | |
| 430 | + /// <summary> | |
| 431 | + /// Szerepek neveinek lekérése. | |
| 432 | + /// </summary> | |
| 433 | + /// <returns>A szerepek neveinek listája.</returns> | |
| 434 | + public static List<string> GetAllNames() | |
| 435 | + { | |
| 436 | + return MembershipDBContext.Roles.Select(r => r.RoleName).ToList(); | |
| 437 | + } | |
| 438 | + /// <summary> | |
| 439 | + /// A megadott nevű szerep benne van-e a megadott szerepkörben tartozik-e. | |
| 440 | + /// </summary> | |
| 441 | + /// <param name="rolename"></param> | |
| 442 | + /// <param name="rolegroupname"></param> | |
| 443 | + /// <returns>true, ha igen</returns> | |
| 444 | + public static bool IsRoleInRoleGroup(string rolename, string rolegroupname) | |
| 445 | + { | |
| 446 | + return MembershipDBContext.RoleGroupRoles.Select(rtorg => rtorg.Role.RoleName == rolename && rtorg.RoleGroup.Name == rolegroupname).ToList().Any(); | |
| 447 | + } | |
| 448 | + #endregion Get methods | |
| 449 | + | |
| 450 | + #region Create method | |
| 451 | + /// <summary> | |
| 452 | + /// Szerep létrehozása. | |
| 453 | + /// </summary> | |
| 454 | + /// <param name="rolename">A létrehozandó szerep neve.</param> | |
| 455 | + /// <exception cref="ApplicationException"> | |
| 456 | + /// Ha üres vagy null a szerep neve. | |
| 457 | + /// Ha már létezik a megadott név. | |
| 458 | + /// </exception> | |
| 459 | + public static void Create(string rolename, string appname=null) | |
| 460 | + { | |
| 461 | + if (String.IsNullOrWhiteSpace(rolename)) { throw new ApplicationException("Role név megadása kötelező!"); } | |
| 462 | + if (appname==null) { appname = MembershipDBContext.Applications.FirstOrDefault(a => a.ApplicationName == "/")?.ApplicationName; } | |
| 463 | + if (appname == null) { appname = MembershipDBContext.Applications.First()?.ApplicationName; } | |
| 464 | + if (appname==null) { throw new ApplicationException("Application nem létezik!"); } | |
| 465 | + var app = MembershipDBContext.Applications.FirstOrDefault(a => a.ApplicationName == appname); | |
| 466 | + | |
| 467 | + if (MembershipDBContext.Roles.Any(x => x.RoleName == rolename)) { throw new ApplicationException($"Role {rolename} already exist!"); } | |
| 468 | + | |
| 469 | + System.Web.Security.Roles.CreateRole(rolename); | |
| 470 | + var rolecreated = MembershipDBContext.Roles.First(x => x.RoleName == rolename); | |
| 471 | + if (rolecreated==null) { throw new ApplicationException($"Creating role failed. Role name:{rolename}!"); } | |
| 472 | + //MembershipDBContext.Roles.Add(new DAL.Role() { RoleName = rolename, ApplicationId=app.ApplicationId,Description=null, }); | |
| 473 | + rolecreated.ApplicationId = app.ApplicationId; | |
| 474 | + MembershipDBContext.SaveChanges(); | |
| 475 | + } | |
| 476 | + #endregion Create method | |
| 477 | + | |
| 478 | + #region Remove methods | |
| 479 | + /// <summary> | |
| 480 | + /// Szerep törlése az egyedi azonosítója megadásával. | |
| 481 | + /// A szerephez tartozó összerendelések is megszűnnek! | |
| 482 | + /// </summary> | |
| 483 | + /// <param name="id">Törlendő szerep egyedi azonosítója.</param> | |
| 484 | + /// <exception cref="ApplicationException">Ha nem található a törlendő szerep.</exception> | |
| 485 | + public static void Remove(int id) | |
| 486 | + { | |
| 487 | + var row = MembershipDBContext.Roles.Find(id); | |
| 488 | + if (row == null) { throw new ApplicationException("Role does not exist!!"); } | |
| 489 | + else { MembershipDBContext.Roles.Remove(row); MembershipDBContext.SaveChanges(); } | |
| 490 | + } | |
| 491 | + /// <summary> | |
| 492 | + /// Szerep törlése az egyedi neve megadásával. | |
| 493 | + /// A szerephez tartozó összerendelések is megszűnnek! | |
| 494 | + /// </summary> | |
| 495 | + /// <param name="name">Törlendő szerep egyedi neve.</param> | |
| 496 | + /// <exception cref="ApplicationException">Ha nem található a törlendő szerep.</exception> | |
| 497 | + public static void Remove(string name) | |
| 498 | + { | |
| 499 | + var row = MembershipDBContext.Roles.FirstOrDefault(x => x.RoleName == name); | |
| 500 | + if (row == null) { throw new ApplicationException("Role does not exist!!"); } | |
| 501 | + else | |
| 502 | + { | |
| 503 | + System.Web.Security.Roles.DeleteRole(name); | |
| 504 | + MembershipDBContext.Roles.Remove(row); | |
| 505 | + MembershipDBContext.SaveChanges(); | |
| 506 | + } | |
| 507 | + } | |
| 508 | + #endregion Remove methods | |
| 509 | + } | |
| 510 | + #endregion Roles | |
| 400 | 511 | #region Assign |
| 401 | 512 | public static class Assign |
| 402 | 513 | { |
| ... | ... | @@ -433,7 +544,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 433 | 544 | foreach (var username in usernamelist) |
| 434 | 545 | { |
| 435 | 546 | CheckUsersExists(username); |
| 436 | - if (!Users.IsInRole(username, rolename)) { Roles.AddUserToRole(username, rolename); } | |
| 547 | + if (!Users.IsInRole(username, rolename)) { System.Web.Security.Roles.AddUserToRole(username, rolename); } | |
| 437 | 548 | } |
| 438 | 549 | } |
| 439 | 550 | } |
| ... | ... | @@ -571,17 +682,17 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 571 | 682 | if (user != null) |
| 572 | 683 | { |
| 573 | 684 | // eltávolítjuk az összes szerepkörét a felhasználónak, majd a felhasználóhoz tartozó UserRoleGroup-okban lévő Roles-okat adjuk hozzá a felhasználóhoz |
| 574 | - if (Roles.GetRolesForUser(user.UserName).Any()) | |
| 685 | + if (System.Web.Security.Roles.GetRolesForUser(user.UserName).Any()) | |
| 575 | 686 | { |
| 576 | - Roles.RemoveUserFromRoles(user.UserName, Roles.GetRolesForUser(user.UserName)); | |
| 687 | + System.Web.Security.Roles.RemoveUserFromRoles(user.UserName, System.Web.Security.Roles.GetRolesForUser(user.UserName)); | |
| 577 | 688 | } |
| 578 | 689 | foreach (DAL.RoleGroup urg in MembershipDBContext.RoleGroups.Where(x => x.Users.Any(y => y.UserId == userId))) |
| 579 | 690 | { |
| 580 | 691 | foreach (string roleName in urg.Roles.Select(x => x.Role.RoleName)) |
| 581 | 692 | { |
| 582 | - if (!Roles.IsUserInRole(user.UserName, roleName)) | |
| 693 | + if (!System.Web.Security.Roles.IsUserInRole(user.UserName, roleName)) | |
| 583 | 694 | { |
| 584 | - Roles.AddUserToRole(user.UserName, roleName); | |
| 695 | + System.Web.Security.Roles.AddUserToRole(user.UserName, roleName); | |
| 585 | 696 | } |
| 586 | 697 | } |
| 587 | 698 | } |
| ... | ... | @@ -794,6 +905,32 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 794 | 905 | public string Description { get; set; } |
| 795 | 906 | } |
| 796 | 907 | #endregion table-Role |
| 908 | + #region table-Application | |
| 909 | + /// <summary> | |
| 910 | + /// DefaultMembershipProvider által létrehozott User tábla. | |
| 911 | + /// </summary> | |
| 912 | + [Table("Applications", Schema = "dbo")] | |
| 913 | + public partial class Application | |
| 914 | + { | |
| 915 | + /// <summary> | |
| 916 | + /// Alkalmazás egyedi azonosítója. | |
| 917 | + /// </summary> | |
| 918 | + [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] | |
| 919 | + public Guid ApplicationId { get; set; } | |
| 920 | + | |
| 921 | + /// <summary> | |
| 922 | + /// Szerep neve. | |
| 923 | + /// </summary> | |
| 924 | + [Required, MaxLength(256)] | |
| 925 | + public string ApplicationName { get; set; } | |
| 926 | + | |
| 927 | + /// <summary> | |
| 928 | + /// Alkalmazás rövid leírása. | |
| 929 | + /// </summary> | |
| 930 | + [MaxLength(256)] | |
| 931 | + public string Description { get; set; } | |
| 932 | + } | |
| 933 | + #endregion table-Application | |
| 797 | 934 | #region table-SecondaryFunction |
| 798 | 935 | /// <summary> |
| 799 | 936 | /// Lehetséges funkciókat tartalmazó táblázat, mely funkciókhoz |
| ... | ... | @@ -1044,7 +1181,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 1044 | 1181 | |
| 1045 | 1182 | #region DbSets |
| 1046 | 1183 | |
| 1047 | - #region !!! A migrációból kivett két tábla. Ezeket a DefaultMembershipProvider kezeli és hozza létre. !!! | |
| 1184 | + #region !!! A migrációból kivett táblák. Ezeket a DefaultMembershipProvider kezeli és hozza létre. !!! | |
| 1185 | + public virtual DbSet<Application> Applications { get; set; } | |
| 1048 | 1186 | public virtual DbSet<Role> Roles { get; set; } |
| 1049 | 1187 | public virtual DbSet<User> Users { get; set; } |
| 1050 | 1188 | #endregion !!! A migrációból kivett két tábla. Ezeket a DefaultMembershipProvider kezeli és hozza létre. !!! | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - UserManager.cs
| ... | ... | @@ -23,7 +23,7 @@ using System.Text.RegularExpressions; |
| 23 | 23 | |
| 24 | 24 | namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 25 | 25 | { |
| 26 | - #region MaintenanceTools class | |
| 26 | + #region UserManager class | |
| 27 | 27 | public static class UserManager |
| 28 | 28 | { |
| 29 | 29 | private static Log4ProUserManagerXmlProcessor Config; |
| ... | ... | @@ -44,6 +44,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 44 | 44 | .AddMenuItem(new Menu.Item(CLP.Module.Log4ProUserManager.Functions.CreateSuperuser.KEY, "Create superuser", CreateSuperuser, new Menu.ExecutorParameter(cfg: config))) |
| 45 | 45 | .AddMenuItem(new Menu.Item(CLP.Module.Log4ProUserManager.Functions.CreateAdminusers.KEY, "Create Admin and Administrator roles and users", CreateAdminusers, new Menu.ExecutorParameter(cfg: config, null))) |
| 46 | 46 | .AddMenuItem(new Menu.Item(CLP.Module.Log4ProUserManager.Functions.DeleteUsers.KEY, "Remove user", DeleteUsers, new Menu.ExecutorParameter(cfg: config, null))) |
| 47 | + .AddMenuItem(new Menu.Item(CLP.Module.Log4ProUserManager.Functions.ExecuteInitAction.KEY, "Execute init actionblock", ExecuteInitActionBlock, new Menu.ExecutorParameter(cfg: config, null))) | |
| 47 | 48 | .SetMenuHeaderDisplayer(UserListDisplayer) |
| 48 | 49 | .SetSelectionMode(Menu.SelectionMode.Single); |
| 49 | 50 | menufunctions.ExecuteMenu(); |
| ... | ... | @@ -70,6 +71,65 @@ namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 70 | 71 | #endregion private UserListDisplayer |
| 71 | 72 | |
| 72 | 73 | #region First level Executors with UI |
| 74 | + #region ExecuteInitActionBlock | |
| 75 | + private static object ExecuteInitActionBlock(object parameter, object o) | |
| 76 | + { | |
| 77 | + var config = (parameter as Menu.ExecutorParameter).GetConfig<Log4ProUserManagerXmlProcessor>(); | |
| 78 | + if (config.InitActionBlockList == null || !config.InitActionBlockList.Any()) return o; | |
| 79 | + | |
| 80 | + var initactionblocknamelist = string.Join(",", config.InitActionBlockList.Select(iab => iab.Name).ToArray()); | |
| 81 | + ColorConsole.WriteLine($"Select one init action block from this list: {initactionblocknamelist}", ConsoleColor.Yellow); | |
| 82 | + var iabname = ColorConsole.ReadLine($"Enter init action block name:", ConsoleColor.Yellow).ToLower(); | |
| 83 | + if (iabname == "EX") { return null; } | |
| 84 | + var stepbystep = ColorConsole.ReadLine($"Do You want to execute step-by-step (true/false/yes/no/?:", ConsoleColor.Yellow).ToLower().Replace("yes","true")==bool.TrueString.ToLower(); | |
| 85 | + if (iabname == "EX") { return null; } | |
| 86 | + try | |
| 87 | + { | |
| 88 | + var iab = config.InitActionBlockList.FirstOrDefault(_iab => _iab.Name.ToLower() == iabname); | |
| 89 | + if (iab == null) { throw new ApplicationException($"InitActionBlock with name '{iabname}' does not exist!"); } | |
| 90 | + foreach (var cr in iab.GetCreateRoleActions()) | |
| 91 | + { | |
| 92 | + if (stepbystep) | |
| 93 | + { | |
| 94 | + ColorConsole.WriteLine($"Action:{cr.Type}, role names: {cr.Roles}.", ConsoleColor.Yellow); | |
| 95 | + var sel = ColorConsole.ReadLine($"Press enter to continue.", ConsoleColor.Gray); if (sel.ToLower() == "ex") return o; | |
| 96 | + } | |
| 97 | + foreach (var rn in cr.RoleArray) { try { MembershipTools.Roles.Create(rn); } catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }; } | |
| 98 | + } | |
| 99 | + foreach (var cr in iab.GetCreateRoleGroupActions()) | |
| 100 | + { | |
| 101 | + if (stepbystep) | |
| 102 | + { | |
| 103 | + ColorConsole.WriteLine($"Action:{cr.Type}, rolegroup name: {cr.Name}, roles: {cr.Roles}.", ConsoleColor.Yellow); | |
| 104 | + var sel = ColorConsole.ReadLine($"Press enter to continue.", ConsoleColor.Gray); if (sel.ToLower() == "ex") return o; | |
| 105 | + } | |
| 106 | + try | |
| 107 | + { | |
| 108 | + MembershipTools.RoleGroups.Create(cr.Name); | |
| 109 | + MembershipTools.Assign.RolesToRoleGroups(cr.Roles, cr.Name); | |
| 110 | + } catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }; | |
| 111 | + | |
| 112 | + } | |
| 113 | + foreach (var cr in iab.GetCreateUserActions()) | |
| 114 | + { | |
| 115 | + if (stepbystep) | |
| 116 | + { | |
| 117 | + var crtext = cr.Superuser ? $"superuser" : $"rolegroups: {cr.RoleGroups}, roles: {cr.Roles}"; | |
| 118 | + ColorConsole.WriteLine($"Action:{cr.Type}, username: {cr.Name}[{cr.Password}], {crtext}.", ConsoleColor.Yellow); | |
| 119 | + var sel = ColorConsole.ReadLine($"Press enter to continue.", ConsoleColor.Gray); if (sel.ToLower() == "ex") return o; | |
| 120 | + } | |
| 121 | + try | |
| 122 | + { | |
| 123 | + MembershipTools.Users.Create(cr.Name, cr.Password, administrator: false, superuser: cr.Superuser, rolenames: cr.RoleArray, rolegroupnames: cr.RoleGroupArray); | |
| 124 | + } | |
| 125 | + catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }; | |
| 126 | + } | |
| 127 | + ColorConsole.WriteLine($"Executing init action block '{iabname}' was successful!", ConsoleColor.Green); | |
| 128 | + } | |
| 129 | + catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); } | |
| 130 | + return o; | |
| 131 | + } | |
| 132 | + #endregion ExecuteInitActionBlock | |
| 73 | 133 | #region CreateSuperuser |
| 74 | 134 | private static object CreateSuperuser(object parameter, object o) |
| 75 | 135 | { |
| ... | ... | @@ -123,7 +183,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 123 | 183 | #endregion DeleteUsers |
| 124 | 184 | #endregion First level Executors with UI |
| 125 | 185 | } |
| 126 | - #endregion MaintenanceTools class | |
| 186 | + #endregion UserManager class | |
| 127 | 187 | #region MaintenanceToolsXmlProcessor class |
| 128 | 188 | public class Log4ProUserManagerXmlProcessor : XmlParser |
| 129 | 189 | { |
| ... | ... | @@ -131,6 +191,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 131 | 191 | public string Xml_SQLConnectionString; |
| 132 | 192 | public string Xml_ProtectedUserNameCommaList; |
| 133 | 193 | public List<UserGroup> UserGroupList; |
| 194 | + public List<InitActionBlock> InitActionBlockList; | |
| 134 | 195 | public List<string> ProtectedUserNameList; |
| 135 | 196 | #endregion fields |
| 136 | 197 | #region constructor |
| ... | ... | @@ -143,13 +204,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 143 | 204 | if (string.IsNullOrEmpty(Xml_ProtectedUserNameCommaList)) { Xml_ProtectedUserNameCommaList = XmlStructure.Attributes.ProtectedUsernameList.Values.DEFAULT; } |
| 144 | 205 | ProtectedUserNameList = Xml_ProtectedUserNameCommaList.Split(',').ToList(); |
| 145 | 206 | UserGroupList = new List<UserGroup>(); |
| 146 | - var ugxmllist = RootElement.Element(XName.Get(nameof(XmlStructure.UserGroups))).Elements(XName.Get(nameof(XmlStructure.UserGroups.UserGroup))); | |
| 207 | + var ugxmllist = RootElement.Element(XName.Get(nameof(XmlStructure.UserGroups)))?.Elements(XName.Get(nameof(XmlStructure.UserGroups.UserGroup))); | |
| 147 | 208 | if (ugxmllist!=null && ugxmllist.Any()) |
| 148 | 209 | { |
| 149 | - foreach (var ugxml in ugxmllist) | |
| 150 | - { | |
| 151 | - UserGroupList.Add(new UserGroup(ugxml)); | |
| 152 | - }; | |
| 210 | + foreach (var ugxml in ugxmllist) { UserGroupList.Add(new UserGroup(ugxml)); }; | |
| 211 | + } | |
| 212 | + InitActionBlockList = new List<InitActionBlock>(); | |
| 213 | + var iabxmllist = RootElement.Element(XName.Get(nameof(XmlStructure.InitActionBlocks)))?.Elements(XName.Get(nameof(XmlStructure.InitActionBlocks.InitActionBlock))); | |
| 214 | + if (iabxmllist != null && iabxmllist.Any()) | |
| 215 | + { | |
| 216 | + foreach (var iabxml in iabxmllist) { InitActionBlockList.Add(new InitActionBlock(iabxml)); }; | |
| 153 | 217 | } |
| 154 | 218 | } |
| 155 | 219 | #region ProtectedUser |
| ... | ... | @@ -173,6 +237,54 @@ namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 173 | 237 | public static class ProtectedUsernameList { public static class Values { public const string DEFAULT = "Admin,Administrator"; } } |
| 174 | 238 | |
| 175 | 239 | } |
| 240 | + public static class InitActionBlocks | |
| 241 | + { | |
| 242 | + public static class InitActionBlock | |
| 243 | + { | |
| 244 | + public static class Attributes | |
| 245 | + { | |
| 246 | + public static class Name { } | |
| 247 | + } | |
| 248 | + public static class CreateRoles | |
| 249 | + { | |
| 250 | + public static class Attributes | |
| 251 | + { | |
| 252 | + public static class Roles | |
| 253 | + { | |
| 254 | + public static class Values | |
| 255 | + { | |
| 256 | + public const string DEFAULT = "Admin,Administrator"; | |
| 257 | + } | |
| 258 | + } | |
| 259 | + } | |
| 260 | + } | |
| 261 | + public static class CreateRoleGroup | |
| 262 | + { | |
| 263 | + public static class Attributes | |
| 264 | + { | |
| 265 | + public static class Name { } | |
| 266 | + public static class Roles { } | |
| 267 | + } | |
| 268 | + } | |
| 269 | + public static class CreateUser | |
| 270 | + { | |
| 271 | + public static class Attributes | |
| 272 | + { | |
| 273 | + public static class Name { } | |
| 274 | + public static class Password { } | |
| 275 | + public static class RoleGroups { } | |
| 276 | + public static class Roles { } | |
| 277 | + public static class Superuser | |
| 278 | + { | |
| 279 | + public static class Values | |
| 280 | + { | |
| 281 | + public const bool DEFAULT = false; | |
| 282 | + } | |
| 283 | + } | |
| 284 | + } | |
| 285 | + } | |
| 286 | + } | |
| 287 | + } | |
| 176 | 288 | public static class UserGroups |
| 177 | 289 | { |
| 178 | 290 | public static class UserGroup |
| ... | ... | @@ -199,6 +311,75 @@ namespace Vrh.Log4Pro.MaintenanceConsole.UserManagerNS |
| 199 | 311 | } |
| 200 | 312 | } |
| 201 | 313 | #endregion XmlStructure |
| 314 | + #region InitActionParameters | |
| 315 | + public class InitActionBlock : XmlLinqBase | |
| 316 | + { | |
| 317 | + public InitActionBlock() { } | |
| 318 | + public InitActionBlock(XElement iabxml) | |
| 319 | + { | |
| 320 | + Name = iabxml.Attribute(XName.Get(nameof(XmlStructure.InitActionBlocks.InitActionBlock.Attributes.Name)))?.Value; | |
| 321 | + if (string.IsNullOrEmpty(Name)) { throw new Exception($"Attribute is mandatory! Name {nameof(XmlStructure.InitActionBlocks.InitActionBlock.Attributes.Name)}."); } | |
| 322 | + | |
| 323 | + InitActionList = new List<InitAction>(); | |
| 324 | + var crlist = iabxml.Elements(XName.Get(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateRoles))); | |
| 325 | + if (crlist != null && crlist.Any()) { foreach (var cr in crlist) { InitActionList.Add(new CreateRoleAction(cr)); } } | |
| 326 | + | |
| 327 | + var crglist = iabxml.Elements(XName.Get(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateRoleGroup))); | |
| 328 | + if (crglist != null && crglist.Any()) { foreach (var crg in crglist) { InitActionList.Add(new CreateRoleGroupAction(crg)); } } | |
| 329 | + | |
| 330 | + var culist = iabxml.Elements(XName.Get(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateUser))); | |
| 331 | + if (culist != null && culist.Any()) { foreach (var cu in culist) { InitActionList.Add(new CreateUserAction(cu)); } } | |
| 332 | + } | |
| 333 | + public enum ActionType { CreateRole, CreateRoleGroup, CreateUser, } | |
| 334 | + public string Name; | |
| 335 | + public List<InitAction> InitActionList; | |
| 336 | + public List<InitAction> GetCreateRoleActions() { return InitActionList.Where(ia => ia.Type == Log4ProUserManagerXmlProcessor.InitActionBlock.ActionType.CreateRole).ToList(); } | |
| 337 | + public List<InitAction> GetCreateRoleGroupActions() { return InitActionList.Where(ia => ia.Type == Log4ProUserManagerXmlProcessor.InitActionBlock.ActionType.CreateRoleGroup).ToList(); } | |
| 338 | + public List<InitAction> GetCreateUserActions() { return InitActionList.Where(ia => ia.Type == Log4ProUserManagerXmlProcessor.InitActionBlock.ActionType.CreateUser).ToList(); } | |
| 339 | + } | |
| 340 | + public class CreateRoleAction : InitAction | |
| 341 | + { | |
| 342 | + public CreateRoleAction(XElement cr){ Type = InitActionBlock.ActionType.CreateRole; Roles = GetValue(cr.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateRoles.Attributes.Roles)), nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateRoles.Attributes.Roles.Values.DEFAULT)); } | |
| 343 | + } | |
| 344 | + public class CreateRoleGroupAction : InitAction | |
| 345 | + { | |
| 346 | + public CreateRoleGroupAction(XElement crg) | |
| 347 | + { | |
| 348 | + Type = InitActionBlock.ActionType.CreateRoleGroup; | |
| 349 | + Name = crg.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateRoleGroup.Attributes.Name)).Value; | |
| 350 | + Roles = crg.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateRoleGroup.Attributes.Roles)).Value; | |
| 351 | + } | |
| 352 | + } | |
| 353 | + public class CreateUserAction : InitAction | |
| 354 | + { | |
| 355 | + public CreateUserAction(XElement cu) | |
| 356 | + { | |
| 357 | + Type = InitActionBlock.ActionType.CreateUser; | |
| 358 | + Name = cu.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateUser.Attributes.Name)).Value; | |
| 359 | + if (string.IsNullOrWhiteSpace(Name)) { Name = "DEFAULT"; } | |
| 360 | + Password = cu.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateUser.Attributes.Password))?.Value; | |
| 361 | + if (string.IsNullOrWhiteSpace(Password)) { Password = Name; } | |
| 362 | + RoleGroups = cu.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateUser.Attributes.RoleGroups))?.Value; | |
| 363 | + if (string.IsNullOrWhiteSpace(RoleGroups)) { RoleGroups = ""; } | |
| 364 | + Roles = cu.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateUser.Attributes.Roles))?.Value; | |
| 365 | + if (string.IsNullOrWhiteSpace(Roles)) { Roles = ""; } | |
| 366 | + var superuservaluestring = cu.Attribute(nameof(XmlStructure.InitActionBlocks.InitActionBlock.CreateUser.Attributes.Superuser))?.Value; | |
| 367 | + Superuser = !string.IsNullOrWhiteSpace(superuservaluestring) && (superuservaluestring.ToLower() == bool.TrueString.ToLower()); | |
| 368 | + } | |
| 369 | + } | |
| 370 | + public class InitAction: XmlLinqBase | |
| 371 | + { | |
| 372 | + public InitActionBlock.ActionType Type; | |
| 373 | + public string Name; | |
| 374 | + public string Password; | |
| 375 | + public string Roles; | |
| 376 | + public string RoleGroups; | |
| 377 | + public string[] RoleArray { get { return Roles.Split(',', ';'); } } | |
| 378 | + public string[] RoleGroupArray { get { return RoleGroups.Split(',', ';'); } } | |
| 379 | + public bool Superuser; | |
| 380 | + } | |
| 381 | + | |
| 382 | + #endregion InitActionParameters | |
| 202 | 383 | #region UserGroup |
| 203 | 384 | public class UserGroup:XmlLinqBase |
| 204 | 385 | { | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
| ... | ... | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; |
| 32 | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
| 33 | 33 | // by using the '*' as shown below: |
| 34 | 34 | // [assembly: AssemblyVersion("1.0.*")] |
| 35 | -[assembly: AssemblyVersion("1.12.0.0")] | |
| 36 | -[assembly: AssemblyFileVersion("1.12.0.0")] | |
| 35 | +[assembly: AssemblyVersion("1.13.0.0")] | |
| 36 | +[assembly: AssemblyFileVersion("1.13.0.0")] | ... | ... |