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")] | ... | ... |