Skip to content

Commit 9be2909

Browse files
authored
Merge pull request #64 from alejoroman0605/unable_create_new_role
Unable create new role
2 parents 5a5ef7e + 9d1ace2 commit 9be2909

File tree

5 files changed

+60
-6
lines changed

5 files changed

+60
-6
lines changed

Modules/UserManager/App_LocalResources/RolesManageController.resx

+6
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,13 @@
123123
<data name="Disabled.Text" xml:space="preserve">
124124
<value>Disabled</value>
125125
</data>
126+
<data name="GlobalRoles.Text" xml:space="preserve">
127+
<value>Global Roles</value>
128+
</data>
126129
<data name="Pending.Text" xml:space="preserve">
127130
<value>Pending</value>
128131
</data>
132+
<data name="RoleNameExists.Text" xml:space="preserve">
133+
<value>A role with that name already exists</value>
134+
</data>
129135
</root>

Modules/UserManager/Controllers/RolesManageController.cs

+28-2
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1818
*/
1919

2020
using DotNetNuke.Framework.JavaScriptLibraries;
21+
using DotNetNuke.Security.Roles;
2122
using DotNetNuke.Services.Localization;
2223
using DotNetNuke.Web.Mvc.Framework.ActionFilters;
2324
using DotNetNuke.Web.Mvc.Framework.Controllers;
24-
using System.Collections.Generic;
2525
using System.Web.Mvc;
2626
using Upendo.Modules.UserManager.Utility;
2727
using Upendo.Modules.UserManager.ViewModels;
@@ -32,6 +32,7 @@ namespace Upendo.Modules.UserManager.Controllers
3232
public class RolesManageController : DnnController
3333
{
3434
private readonly string ResourceFile = "~/DesktopModules/MVC/Upendo.Modules.UserManager/App_LocalResources/UserManageController.resx";
35+
private readonly string RolesResourceFile = "~/DesktopModules/MVC/Upendo.Modules.UserManager/App_LocalResources/RolesManageController.resx";
3536

3637
public RolesManageController()
3738
{
@@ -77,6 +78,18 @@ public ActionResult Create()
7778
[HttpPost]
7879
public ActionResult Create(RolesViewModel item)
7980
{
81+
// Check if the RoleName is already in use
82+
var portalId = ModuleContext.PortalId;
83+
var rol = RoleController.Instance.GetRoleByName(portalId, item.RoleName);
84+
if (rol != null)
85+
{
86+
ViewBag.RoleGroups = RolesRepository.GetRoleGroups(portalId);
87+
ViewBag.StatusList = RolesRepository.StatusList();
88+
ViewBag.ErrorMessage = Localization.GetString("RoleNameExists.Text", RolesResourceFile);
89+
return View(item);
90+
}
91+
92+
// If no validation issue, create the role
8093
RolesRepository.CreateRol(item);
8194
return RedirectToAction("Index");
8295
}
@@ -93,6 +106,19 @@ public ActionResult Edit(int itemId)
93106
[HttpPost]
94107
public ActionResult Edit(RolesViewModel item)
95108
{
109+
// Check if the name has changed and if the new name is already in use
110+
var portalId = ModuleContext.PortalId;
111+
var originalRole = RoleController.Instance.GetRoleById(portalId, item.RoleId);
112+
var existingRole = RoleController.Instance.GetRoleByName(portalId, item.RoleName);
113+
if (originalRole != null && originalRole.RoleName != item.RoleName && existingRole != null)
114+
{
115+
ViewBag.RoleGroups = RolesRepository.GetRoleGroups(portalId);
116+
ViewBag.StatusList = RolesRepository.StatusList();
117+
ViewBag.ErrorMessage = Localization.GetString("RoleNameExists.Text", RolesResourceFile);
118+
return View(item);
119+
}
120+
121+
// If no validation issue, proceed with editing the role
96122
RolesRepository.EditRol(item);
97123
return RedirectToAction("Index");
98124
}
@@ -111,4 +137,4 @@ public ActionResult Delete(int itemId)
111137
return RedirectToAction("Index");
112138
}
113139
}
114-
}
140+
}

Modules/UserManager/Utility/RolesRepository.cs

+14-4
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,19 @@ public static List<RoleGroups> GetRoleGroups(int portalId)
8686
{
8787
var roleGroups = RoleController.GetRoleGroups(portalId).ToArray();
8888
var groups = new List<RoleGroups>();
89+
90+
string ResourceFile = "~/DesktopModules/MVC/Upendo.Modules.UserManager/App_LocalResources/RolesManageController.resx";
91+
// Add global roles to the groups list
92+
var rolGroup = new RoleGroups()
93+
{
94+
RoleGroupId = -1,
95+
RoleGroupName = Localization.GetString("GlobalRoles.Text", ResourceFile),
96+
};
97+
groups.Add(rolGroup);
98+
8999
foreach (RoleGroupInfo item in roleGroups)
90100
{
91-
var rolGroup = new RoleGroups()
101+
rolGroup = new RoleGroups()
92102
{
93103
RoleGroupId = item.RoleGroupID,
94104
RoleGroupName = item.RoleGroupName,
@@ -135,13 +145,13 @@ public static void DeleteRol(int itemId, int portalId)
135145
public static List<object> StatusList()
136146
{
137147
string ResourceFile = "~/DesktopModules/MVC/Upendo.Modules.UserManager/App_LocalResources/RolesManageController.resx";
138-
var statusList= new List<object>
148+
var statusList = new List<object>
139149
{
150+
new { Status = 1, Name = Localization.GetString("Approved.Text", ResourceFile) },
140151
new { Status = -1, Name = Localization.GetString("Pending.Text", ResourceFile) },
141152
new { Status = 0, Name = Localization.GetString("Disabled.Text", ResourceFile) },
142-
new { Status = 1, Name = Localization.GetString("Approved.Text", ResourceFile) },
143153
};
144-
return statusList;
154+
return statusList;
145155
}
146156
}
147157
}

Modules/UserManager/Views/RolesManage/Create.cshtml

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
string ResourceFile = "~/DesktopModules/MVC/Upendo.Modules.UserManager/App_LocalResources/AddEditRoles.resx";
88
}
99
<div class="dnnDialog">
10+
@if (!string.IsNullOrEmpty(ViewBag.ErrorMessage))
11+
{
12+
<div class="dnnFormMessage dnnFormError">
13+
<p>@ViewBag.ErrorMessage</p>
14+
</div>
15+
}
1016
<fieldset>
1117
<div class="dnnFormItem">
1218
<div><label>@Localization.GetString("RoleName", @ResourceFile)</label></div>

Modules/UserManager/Views/RolesManage/Edit.cshtml

+6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88
}
99

1010
<div class="dnnDialog">
11+
@if (!string.IsNullOrEmpty(ViewBag.ErrorMessage))
12+
{
13+
<div class="dnnFormMessage dnnFormError">
14+
<p>@ViewBag.ErrorMessage</p>
15+
</div>
16+
}
1117
<fieldset>
1218
<div class="dnnFormItem">
1319
<div><label>@Localization.GetString("RoleName", @ResourceFile)</label></div>

0 commit comments

Comments
 (0)