public async Task <IActionResult> AddRole(PermissionsViewModel model) { try { if (string.IsNullOrWhiteSpace(model.NewDescription)) { model.NewDescription = string.Empty; } Role role = new Role { Name = model.NewRoleName, Description = model.NewDescription }; var addRoleResponse = await _authClient.AddRoleAsync <Role>(role); if (addRoleResponse.IsSuccessStatusCode) { HttpContext.Session.SetString("SuccessMessage", "Role added successfully"); return(RedirectToAction("EditPermissions", "Permissions")); } else { if (addRoleResponse.StatusCode == System.Net.HttpStatusCode.Conflict) { HttpContext.Session.SetString("ErrorMessage", addRoleResponse.BOSErrors[0].Message); return(RedirectToAction("EditPermissions", "Permissions")); } } return(RedirectToAction("Index", "Error")); } catch (Exception e) { return(RedirectToAction("Index", "Error")); } }
public async Task <IActionResult> AddUser(PermissionsViewModel model) { try { var response = await _authClient.AddNewUserAsync <User>(model.Email, model.Email, model.Password); if (response.IsSuccessStatusCode) { User launchPadUser = new User { Id = response.User.Id, FirstName = model.FirstName.ToString(), LastName = model.LastName.ToString(), Email = model.Email, Username = model.Email }; var myresult = await _authClient.ExtendUserAsync(launchPadUser); if (response.IsSuccessStatusCode) { await _emailSender.SendEmailAsync( model.Email, "Welcome to BOS", $"<h1>Welcome!</h1><hr /><p>Sign in with your username and password.</p><br /><p>Username: {model.Email}, Password: {model.Password}</p>"); HttpContext.Session.SetString("SuccessMessage", "User added successfully"); return(RedirectToAction("EditUserPermissions", "Permissions")); } else { if (response.StatusCode == System.Net.HttpStatusCode.Conflict) { HttpContext.Session.SetString("ErrorMessage", response.BOSErrors[0].Message); return(RedirectToAction("EditUserPermissions", "Permissions")); } } return(RedirectToAction("Index", "Error")); } else { if (response.StatusCode == System.Net.HttpStatusCode.Conflict) { HttpContext.Session.SetString("ErrorMessage", response.BOSErrors[0].Message); return(RedirectToAction("EditUserPermissions", "Permissions")); } } return(RedirectToAction("Index", "Error")); } catch (Exception ex) { return(RedirectToAction("Index", "Error")); } }
public async Task <IActionResult> Modules() { try { RemoveAllSessions(); var modulesResponse = await _iaClient.GetModulesAsync <Module>(true, true); var model = new PermissionsViewModel { Modules = modulesResponse.Modules, }; return(View("Modules", model)); } catch (Exception) { throw new Exception("Error while fetching modules"); } }
public async Task <IActionResult> EditUserPermissions() { try { var usersResponse = await _authClient.GetUsersWithRolesAsync <User>(); var modulesResponse = await _iaClient.GetModulesAsync <Module>(true, true); string userId = string.Empty, userName = string.Empty, userRoles = string.Empty; if (HttpContext.Session.GetString("UserId") != null && HttpContext.Session.GetString("UserId") != "") { userId = HttpContext.Session.GetString("UserId"); userName = HttpContext.Session.GetString("UserName"); userRoles = HttpContext.Session.GetString("UserRoles"); } else { if (usersResponse.Users[0].Roles.Count > 0) { var thisRoles = ""; foreach (var role in usersResponse.Users[0].Roles) { if (thisRoles == "") { thisRoles = role.Role.Name; } else { thisRoles += "," + role.Role.Name; } } userRoles = thisRoles; } userId = Convert.ToString(usersResponse.Users[0].Id); userName = usersResponse.Users[0].LastName + ", " + usersResponse.Users[0].FirstName; RemoveUserSessions(); HttpContext.Session.SetString("UserId", userId); HttpContext.Session.SetString("UserName", userName); HttpContext.Session.SetString("UserRoles", userRoles); } var userPermissionsSets = await GetUserPermissionsSets(Guid.Parse(userId)); var model = new PermissionsViewModel { Users = usersResponse.Users, Modules = modulesResponse.Modules, Permissions = userPermissionsSets }; foreach (Module r in modulesResponse.Modules) { var OperationsResponse = await _iaClient.GetFilteredOperationsAsync <Operation>($"$filter=deleted eq false and parentOperationId eq null and moduleId eq {r.Id}&$expand=ChildOperations($levels=max)&$orderBy=LastModifiedOn desc"); if (OperationsResponse != null && OperationsResponse.IsSuccessStatusCode) { r.Operations = new List <IOperation>(); } r.Operations.AddRange(OperationsResponse.Operations); foreach (Module m in r.ChildModules) { if (userPermissionsSets.Any(p => p.ReferenceId == r.Id)) { m.IsAssigned = true; } else { m.IsAssigned = false; } var set = (userPermissionsSets.Any(p => p.ReferenceId == m.Id)) ? userPermissionsSets.Find(p => p.ReferenceId == m.Id) : new PermissionsSet(); if (m.Operations != null && m.Operations.Count > 0) { var childOperations = SetIsAssignedOperations(m.Operations, set.Permissions); m.Operations = childOperations; } if (r.ChildModules != null && r.ChildModules.Count > 0) { var childmodules = SetIsAssignedForSubmodules(r.ChildModules, userPermissionsSets); r.ChildModules = childmodules; } } model = SetViewModelPermissionSet(r, userPermissionsSets, model); } return(View("EditUser", model)); } catch (Exception) { throw new Exception("Error while fetching values"); } }
public PermissionsViewModel SetViewModelPermissionSet(Module Module, List <PermissionsSet> userPermissionsSets, PermissionsViewModel model) { var AllPermissionsEnabled = false; var set = (userPermissionsSets.Any(p => p.ReferenceId == Module.Id)) ? userPermissionsSets.Find(p => p.ReferenceId == Module.Id) : new PermissionsSet(); foreach (Operation o in Module.Operations) { if (set.Permissions.Any(p => p.Id == o.Id)) { o.IsAssigned = true; } else { o.IsAssigned = false; } if (o.ChildOperations != null && o.ChildOperations.Count > 0) { var childOperations = SetIsAssignedOperations(o.ChildOperations, set.Permissions); o.ChildOperations = childOperations; } } var operationList = Module.Operations.Select(o => o.Id).ToList(); var permitedOperationsList = set.Permissions.Select(p => p.Id).ToList(); AllPermissionsEnabled = operationList.All(o => permitedOperationsList.Contains(o)); if (AllPermissionsEnabled == true) { Module.IsAssigned = true; } if (userPermissionsSets.Any(m => m.ReferenceId == Module.Id)) { if (AllPermissionsEnabled) { model.AssignedModules.Add(Module); } else { bool toPush = true; if (toPush) { if (!model.PartiallyAssignedModules.Any(am => am.Id == set.ReferenceId)) { model.PartiallyAssignedModules.Add(Module); } } } } else { model.NotAssignedModules.Add(Module); } return(model); }
public async Task <IActionResult> FetchModules(string id, string name, string mode = "role", string roles = "") { try { if (string.IsNullOrEmpty(roles)) { roles = string.Empty; } if (mode.Equals("role")) { RemoveRoleSessions(); HttpContext.Session.SetString("RoleId", id); HttpContext.Session.SetString("RoleName", name); } else { RemoveUserSessions(); HttpContext.Session.SetString("UserId", id); HttpContext.Session.SetString("UserName", name); HttpContext.Session.SetString("UserRoles", roles); } var modulesResponse = await _iaClient.GetModulesAsync <Module>(true, true); var userPermissionsSets = await GetUserPermissionsSets(Guid.Parse(id)); var model = new PermissionsViewModel { Permissions = userPermissionsSets }; foreach (Module r in modulesResponse.Modules) { var OperationsResponse = await _iaClient.GetFilteredOperationsAsync <Operation>($"$filter=deleted eq false and parentOperationId eq null and moduleId eq {r.Id}&$expand=ChildOperations($levels=max)&$orderBy=LastModifiedOn desc"); if (OperationsResponse != null && OperationsResponse.IsSuccessStatusCode) { r.Operations = new List <IOperation>(); } r.Operations.AddRange(OperationsResponse.Operations); foreach (Module m in r.ChildModules) { if (userPermissionsSets.Any(p => p.ReferenceId == r.Id)) { m.IsAssigned = true; } else { m.IsAssigned = false; } var set = (userPermissionsSets.Any(p => p.ReferenceId == m.Id)) ? userPermissionsSets.Find(p => p.ReferenceId == m.Id) : new PermissionsSet(); if (m.Operations != null && m.Operations.Count > 0) { var childOperations = SetIsAssignedOperations(m.Operations, set.Permissions); m.Operations = childOperations; } if (r.ChildModules != null && r.ChildModules.Count > 0) { var childmodules = SetIsAssignedForSubmodules(r.ChildModules, userPermissionsSets); r.ChildModules = childmodules; } } model = SetViewModelPermissionSet(r, userPermissionsSets, model); } return(Json(model)); } catch (Exception e) { return(Json("Something went wrong, please contact administrator")); } }