Beispiel #1
0
        /// <summary>
        /// Prepare permission mapping model
        /// </summary>
        /// <param name="model">Permission mapping model</param>
        /// <returns>Permission mapping model</returns>
        public virtual PermissionMappingModel PreparePermissionMappingModel(PermissionMappingModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var customerRoles = _customerService.GetAllCustomerRoles(true);

            model.AvailableCustomerRoles = customerRoles.Select(role => role.ToModel <CustomerRoleModel>()).ToList();

            foreach (var permissionRecord in _permissionService.GetAllPermissionRecords())
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Name       = _localizationService.GetLocalizedPermissionName(permissionRecord),
                    SystemName = permissionRecord.SystemName
                });

                foreach (var role in customerRoles)
                {
                    if (!model.Allowed.ContainsKey(permissionRecord.SystemName))
                    {
                        model.Allowed[permissionRecord.SystemName] = new Dictionary <int, bool>();
                    }
                    model.Allowed[permissionRecord.SystemName][role.Id] = permissionRecord.PermissionRecordCustomerRoleMappings
                                                                          .Any(mapping => mapping.CustomerRoleId == role.Id);
                }
            }

            return(model);
        }
        /// <summary>
        /// Prepare permission mapping model
        /// </summary>
        /// <param name="model">Permission mapping model</param>
        /// <returns>Permission mapping model</returns>
        public virtual PermissionMappingModel PreparePermissionMappingModel(PermissionMappingModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var userRoles = _userService.GetAllUserRoles(true);

            model.AvailableUserRoles = userRoles.Select(role => role.ToModel <UserRoleModel>()).OrderBy(x => x.Id).ToList();

            foreach (var permissionRecord in _permissionService.GetAllPermissionRecords())
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Name       = permissionRecord.Name,
                    SystemName = permissionRecord.SystemName
                });

                foreach (var role in userRoles)
                {
                    if (!model.Allowed.ContainsKey(permissionRecord.SystemName))
                    {
                        model.Allowed[permissionRecord.SystemName] = new Dictionary <int, bool>();
                    }
                    model.Allowed[permissionRecord.SystemName][role.Id] = permissionRecord.PermissionRecordUserRoleMappings
                                                                          .Any(mapping => mapping.UserRoleId == role.Id);
                }
            }

            return(model);
        }
        public virtual IActionResult Permissions()
        {//PageSize
            //var report = SharedData.PermissionReport;
            //if (report != null)
            //{
            //    SharedData.RowCount = report.RowCount;
            //    SharedData.ReportName = "Permission";
            //}
            //else
            //{
            //    SharedData.RowCount = 10;
            //    SharedData.ReportName = "Permission";
            //}
            //Form Name
            ViewBag.FormName = "Permissions";
            //if (SharedData.isManageAclMenuAccessible == false)
            //    return AccessDeniedView();

            var model = new PermissionMappingModel();

            var permissionRecords = _permissionService.GetAllPermissionRecords();
            var customerRoles     = _customerService.GetAllCustomerRoles(true);

            foreach (var pr in permissionRecords)
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    //Name = pr.Name,
                    Name       = pr.Name,
                    SystemName = pr.SystemName
                });
            }
            foreach (var cr in customerRoles)
            {
                model.AvailableCustomerRoles.Add(new CustomerRoleModel
                {
                    Id   = cr.Id,
                    Name = cr.Name
                });
            }
            foreach (var pr in permissionRecords)
            {
                foreach (var cr in customerRoles)
                {
                    var allowed = pr.PermissionRecord_Role_Mapping.Count(x => x.CustomerRole.Id == cr.Id) > 0;
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <int, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
Beispiel #4
0
        public virtual IActionResult PermissionsSave(PermissionMappingModel model)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAcl))
            {
                return(AccessDeniedView());
            }

            var permissionRecords = _permissionService.GetAllPermissionRecords();
            var customerRoles     = _customerService.GetAllCustomerRoles(true);

            foreach (var cr in customerRoles)
            {
                var formKey = "allow_" + cr.Id;
                var permissionRecordSystemNamesToRestrict = !StringValues.IsNullOrEmpty(model.Form[formKey])
                    ? model.Form[formKey].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList()
                    : new List <string>();

                foreach (var pr in permissionRecords)
                {
                    var allow = permissionRecordSystemNamesToRestrict.Contains(pr.SystemName);
                    if (allow)
                    {
                        if (pr.PermissionRecordCustomerRoleMappings.FirstOrDefault(x => x.CustomerRoleId == cr.Id) != null)
                        {
                            continue;
                        }

                        pr.PermissionRecordCustomerRoleMappings.Add(new PermissionRecordCustomerRoleMapping {
                            CustomerRole = cr
                        });
                        _permissionService.UpdatePermissionRecord(pr);
                    }
                    else
                    {
                        if (pr.PermissionRecordCustomerRoleMappings.FirstOrDefault(x => x.CustomerRoleId == cr.Id) == null)
                        {
                            continue;
                        }

                        pr.PermissionRecordCustomerRoleMappings
                        .Remove(pr.PermissionRecordCustomerRoleMappings.FirstOrDefault(mapping => mapping.CustomerRoleId == cr.Id));
                        _permissionService.UpdatePermissionRecord(pr);
                    }
                }
            }

            _notificationService.SuccessNotification(_localizationService.GetResource("Admin.Configuration.ACL.Updated"));

            return(RedirectToAction("Permissions"));
        }
Beispiel #5
0
        public virtual IActionResult PermissionsSave(PermissionMappingModel model, IFormCollection form)
        {
#if RELEASE
            var user = _userService.GetUserBySystemName(User.Identity.Name);
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAcl, user))
            {
                return(AccessDeniedView());
            }
#endif


            var permissionRecords = _permissionService.GetAllPermissionRecords();
            var userRoles         = _userService.GetAllUserRoles(true);

            foreach (var cr in userRoles)
            {
                var formKey = "allow_" + cr.Id;
                var permissionRecordSystemNamesToRestrict = !StringValues.IsNullOrEmpty(form[formKey])
                    ? form[formKey].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList()
                    : new List <string>();

                foreach (var pr in permissionRecords)
                {
                    var allow = permissionRecordSystemNamesToRestrict.Contains(pr.SystemName);
                    //если права уже есть
                    if (allow == _permissionService.Authorize(pr.SystemName, cr.Id))
                    {
                        continue;
                    }

                    if (allow)
                    {
                        _permissionService.InsertPermissionRecordUserRoleMapping(new PermissionRecordUserRoleMapping {
                            PermissionRecordId = pr.Id, UserRoleId = cr.Id
                        });
                    }
                    else
                    {
                        _permissionService.DeletePermissionRecordUserRoleMapping(pr.Id, cr.Id);
                    }

                    _permissionService.UpdatePermissionRecord(pr);
                }
            }

            //   _notificationService.SuccessNotification( "Admin.Configuration.ACL.Updated");

            return(RedirectToAction("Permissions"));
        }
        public ActionResult Permissions()
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAcl))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionMappingModel();

            var permissionRecords = _permissionService.GetAllPermissionRecords();
            var customerRoles     = _customerService.GetAllCustomerRoles(true);

            foreach (var pr in permissionRecords)
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Name       = pr.Name,
                    SystemName = pr.SystemName,
                    Category   = pr.Category
                });
            }

            foreach (var cr in customerRoles)
            {
                model.AvailableCustomerRoles.Add(new CustomerRoleModel
                {
                    Id   = cr.Id,
                    Name = cr.Name
                });
            }

            foreach (var pr in permissionRecords)
            {
                foreach (var cr in customerRoles)
                {
                    var allowed = pr.CustomerRoles.Any(x => x.Id == cr.Id);

                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <int, bool>();
                    }

                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
Beispiel #7
0
        public virtual ActionResult Permissions()
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAcl))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionMappingModel();

            var permissionRecords = _permissionService.GetAllPermissionRecords();
            var customerRoles     = _customerService.GetAllCustomerRoles(true);

            // 填充所有权限记录项
            foreach (var pr in permissionRecords)
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    //Name = pr.Name,
                    Name       = pr.GetLocalizedPermissionName(_localizationService, _workContext),
                    SystemName = pr.SystemName
                });
            }
            // 填充所有权限角色项
            foreach (var cr in customerRoles)
            {
                model.AvailableCustomerRoles.Add(new CustomerRoleModel
                {
                    Id   = cr.Id,
                    Name = cr.Name
                });
            }
            // 填充权限记录和权限角色匹配项
            foreach (var pr in permissionRecords)
            {
                foreach (var cr in customerRoles)
                {
                    bool allowed = pr.CustomerRoles.Count(x => x.Id == cr.Id) > 0;
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <long, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
        public ActionResult Permissions()
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAcl))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionMappingModel();

            var permissionRecords = _permissionService.GetAllPermissionRecords();
            var customerRoles     = _customerService.GetAllCustomerRoles(true).Where(o => o.SystemName != "ForumModerators" && o.SystemName != "Guests");

            foreach (var pr in permissionRecords)
            {
                model.AvailablePermissions.Add(new PermissionRecordModel()
                {
                    //Name = pr.Name,
                    Name       = pr.GetLocalizedPermissionName(_localizationService, _workContext),
                    SystemName = pr.SystemName
                });
            }
            foreach (var cr in customerRoles)
            {
                model.AvailableCustomerRoles.Add(new CustomerRoleModel()
                {
                    Id   = cr.Id,
                    Name = cr.Name
                });
            }
            foreach (var pr in permissionRecords)
            {
                foreach (var cr in customerRoles)
                {
                    bool allowed = pr.CustomerRoles.Count(x => x.Id == cr.Id) > 0;
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <int, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
Beispiel #9
0
        public ActionResult Permissions()
        {
            if (!m_PermissionService.Authorize(StandardPermissionProvider.AclManage))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionMappingModel();

            var permissionRecords = m_PermissionService.GetAllPermissionRecords();
            var roles             = m_CustomerService.GetAllRoles(true);

            foreach (var pr in permissionRecords)
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Name       = pr.Name,
                    SystemName = pr.SystemName
                });
            }
            foreach (var cr in roles)
            {
                model.AvailableRoles.Add(new RoleModel
                {
                    Id   = cr.Id,
                    Name = cr.Name
                });
            }
            foreach (var pr in permissionRecords)
            {
                foreach (var cr in roles)
                {
                    var cr1     = cr;
                    var allowed = pr.RolePermissionRecords.Where(x => x.RoleId == cr1.Id).ToList().Count() > 0;
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <Guid, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
        //
        // GET: /Permission/
        public async Task <ActionResult> Index()
        {
            if (!_permissionService.Authorize(PermissionProvider.Management))
            {
                return(AccessDeniedView());
            }

            var model             = new PermissionMappingModel();
            var permissionRecords = await _permissionService.GetAllAsync();

            var roles = await _userService.GetAllUserRolesAsync();

            foreach (var pr in permissionRecords.OrderBy(p => p.Order))
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Category   = pr.Category,
                    Name       = pr.Name,
                    SystemName = pr.SystemName
                });
            }
            foreach (var cr in roles)
            {
                model.AvailableRoles.Add(new RoleModel
                {
                    Id   = cr.Id,
                    Name = cr.Name
                });
            }

            foreach (var pr in permissionRecords)
            {
                foreach (var cr in roles)
                {
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <int, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = pr.UserRoles.Any(r => r.Id == cr.Id);
                }
            }

            return(View(model));
        }
        public async Task <IActionResult> Permissions()
        {
            if (!await _permissionService.Authorize(StandardPermissionProvider.ManageAcl))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionMappingModel();

            var permissionRecords = await _permissionService.GetAllPermissionRecords();

            var customerRoles = await _customerService.GetAllCustomerRoles(showHidden : true);

            foreach (var pr in permissionRecords)
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    //Name = pr.Name,
                    Name       = pr.GetLocalizedPermissionName(_localizationService, _workContext),
                    SystemName = pr.SystemName
                });
            }
            foreach (var cr in customerRoles)
            {
                model.AvailableCustomerRoles.Add(new CustomerRoleModel()
                {
                    Id = cr.Id, Name = cr.Name
                });
            }
            foreach (var pr in permissionRecords)
            {
                foreach (var cr in customerRoles)
                {
                    bool allowed = pr.CustomerRoles.Count(x => x == cr.Id) > 0;
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <string, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
        public virtual async Task <IActionResult> PermissionsSave(PermissionMappingModel model, IFormCollection form)
        {
            if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageAcl))
            {
                return(AccessDeniedView());
            }

            var permissionRecords = await _permissionService.GetAllPermissionRecordsAsync();

            var customerRoles = await _customerService.GetAllCustomerRolesAsync(true);

            foreach (var cr in customerRoles)
            {
                var formKey = "allow_" + cr.Id;
                var permissionRecordSystemNamesToRestrict = !StringValues.IsNullOrEmpty(form[formKey])
                    ? form[formKey].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList()
                    : new List <string>();

                foreach (var pr in permissionRecords)
                {
                    var allow = permissionRecordSystemNamesToRestrict.Contains(pr.SystemName);

                    if (allow == await _permissionService.AuthorizeAsync(pr.SystemName, cr.Id))
                    {
                        continue;
                    }

                    if (allow)
                    {
                        await _permissionService.InsertPermissionRecordCustomerRoleMappingAsync(new PermissionRecordCustomerRoleMapping { PermissionRecordId = pr.Id, CustomerRoleId = cr.Id });
                    }
                    else
                    {
                        await _permissionService.DeletePermissionRecordCustomerRoleMappingAsync(pr.Id, cr.Id);
                    }

                    await _permissionService.UpdatePermissionRecordAsync(pr);
                }
            }

            _notificationService.SuccessNotification(await _localizationService.GetResourceAsync("Admin.Configuration.ACL.Updated"));

            return(RedirectToAction("Permissions"));
        }
Beispiel #13
0
        public ActionResult PermissionList()
        {
            var permissionRecords     = _permissionService.GetAllPermissionRecords();
            var customerRoles         = _customerService.GetAllCustomerRoles(true);
            var permissionRecordModel = new PermissionMappingModel();

            foreach (var customerRole in customerRoles)
            {
                permissionRecordModel.AvailableCustomerRoles.Add(new CustomerRoleModel
                {
                    Id   = customerRole.Id,
                    Name = customerRole.Name
                });
            }
            foreach (var permissionRecord in permissionRecords)
            {
                permissionRecordModel.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Id         = permissionRecord.Id,
                    Name       = permissionRecord.Name,
                    SystemName = permissionRecord.SystemName
                });
            }

            foreach (var permissionRecord in permissionRecords)
            {
                Dictionary <int, bool> dir = new Dictionary <int, bool>();

                foreach (var customerRole in customerRoles)
                {
                    //if (customerRole.PermissionRecords.Contains(permissionRecord))
                    //{
                    bool allowed = permissionRecord.CustomerRoles.Count(x => x.Id == customerRole.Id) > 0;
                    if (!permissionRecordModel.Allowed.ContainsKey(permissionRecord.SystemName))
                    {
                        permissionRecordModel.Allowed[permissionRecord.SystemName] = new Dictionary <int, bool>();
                    }
                    permissionRecordModel.Allowed[permissionRecord.SystemName][customerRole.Id] = allowed;
                    //}
                }
            }
            return(View(permissionRecordModel));
        }
Beispiel #14
0
        public ActionResult Permissions()
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAcl))
            {
                return(AccessDeniedView());
            }

            var model = new PermissionMappingModel();

            var permissionRecords = _permissionService.GetAllPermissionRecords();
            var userRoles         = _userService.GetAllUserRoles(true);

            foreach (var pr in permissionRecords)
            {
                model.AvailablePermissions.Add(new PermissionRecordModel()
                {
                    Name       = pr.Name,
                    SystemName = pr.SystemName
                });
            }
            foreach (var cr in userRoles)
            {
                model.AvailableUserRoles.Add(new UserRoleModel()
                {
                    Id   = cr.Id,
                    Name = cr.Name
                });
            }
            foreach (var pr in permissionRecords)
            {
                foreach (var cr in userRoles)
                {
                    bool allowed = pr.UserRoles.Where(x => x.Id == cr.Id).ToList().Count() > 0;
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <int, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
Beispiel #15
0
        public async Task <IActionResult> Index()
        {
            var model = new PermissionMappingModel();

            var permissionRecords = await _permissionService.GetAllPermissions();

            var customerGroups = await _groupService.GetAllCustomerGroups(showHidden : true);

            foreach (var pr in permissionRecords.OrderBy(x => x.Category))
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Name       = pr.GetTranslationPermissionName(_translationService, _workContext),
                    SystemName = pr.SystemName,
                    Area       = pr.Area,
                    Category   = pr.Category,
                    Actions    = pr.Actions.Any()
                });
            }
            foreach (var cr in customerGroups)
            {
                model.AvailableCustomerGroups.Add(new CustomerGroupModel()
                {
                    Id = cr.Id, Name = cr.Name
                });
            }
            foreach (var pr in permissionRecords)
            {
                foreach (var cr in customerGroups)
                {
                    bool allowed = pr.CustomerGroups.Count(x => x == cr.Id) > 0;
                    if (!model.Allowed.ContainsKey(pr.SystemName))
                    {
                        model.Allowed[pr.SystemName] = new Dictionary <string, bool>();
                    }
                    model.Allowed[pr.SystemName][cr.Id] = allowed;
                }
            }

            return(View(model));
        }
        /// <summary>
        /// Prepare permission mapping model
        /// </summary>
        /// <param name="model">Permission mapping model</param>
        /// <returns>Permission mapping model</returns>
        public virtual PermissionMappingModel PreparePermissionMappingModel(PermissionMappingModel model, string[] roles)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var userRoles = _userService.GetAllUserRoles(true).Where(r => roles.Contains(r.Id));

            model.AvailableUserRoles = userRoles.Select(role => new UserRoleModel
            {
                Id           = role.Id,
                Name         = role.Name,
                Active       = role.Active,
                IsSystemRole = role.IsSystemRole,
                SystemName   = role.SystemName
            }).ToList(); // role.ToModel<UserRoleModel>()).ToList();

            foreach (var permissionRecord in _permissionService.GetAllPermissionRecords())
            {
                model.AvailablePermissions.Add(new PermissionRecordModel
                {
                    Name       = permissionRecord.Name,
                    SystemName = permissionRecord.SystemName
                });

                foreach (var role in userRoles)
                {
                    if (!model.Allowed.ContainsKey(permissionRecord.SystemName))
                    {
                        model.Allowed[permissionRecord.SystemName] = new Dictionary <string, bool>();
                    }
                    model.Allowed[permissionRecord.SystemName][role.Id] =
                        _permissionService.GetMappingByPermissionRecordId(permissionRecord.Id).Any(mapping => mapping.UserRoleId == role.Id);
                }
            }

            return(model);
        }
Beispiel #17
0
        //
        // GET: /Sys_GroupPermission/
        public ActionResult Index(string id)
        {
            Guid id1 = Guid.Empty;

            Guid.TryParse(id, out id1);
            var model = new PermissionMappingModel();
            List <RolesNameModel> listRolesName = new List <RolesNameModel>
            {
                new RolesNameModel()
                {
                    Id = 1, Name = ConstantDisplay.HRM_System_Resource_Sys_View.TranslateString()
                },
                new RolesNameModel()
                {
                    Id = 2, Name = ConstantDisplay.HRM_System_Resource_Sys_Create.TranslateString()
                },
                new RolesNameModel()
                {
                    Id = 3, Name = ConstantDisplay.HRM_System_Resource_Sys_Edit.TranslateString()
                },
                new RolesNameModel()
                {
                    Id = 4, Name = ConstantDisplay.HRM_System_Resource_Sys_Delete.TranslateString()
                },
                new RolesNameModel()
                {
                    Id = 5, Name = ConstantDisplay.HRM_System_Resource_Sys_Export.TranslateString()
                },
                new RolesNameModel()
                {
                    Id = 6, Name = ConstantDisplay.HRM_System_Resource_Sys_Import.TranslateString()
                }
            };

            model.AvailableRolesName.AddRange(listRolesName);

            var service = new RestServiceClient <IEnumerable <Sys_GroupPermissionModel> >(UserLogin);

            service.SetCookies(Request.Cookies, hrm_Sys_Service);
            var listAvailablePermissions = service.Get(hrm_Sys_Service, "api/Sys_GroupPermission/", id1);

            model.AvailablePermissions.AddRange(listAvailablePermissions);

            var roles = new Dictionary <string, IDictionary <int, bool> >();

            foreach (var pr in listAvailablePermissions)
            {
                var role = new Dictionary <int, bool>
                {
                    { 1, PrivilegeType.View.CheckPrivilege(pr.PrivilegeNumber.GetInteger()) },
                    { 2, PrivilegeType.Create.CheckPrivilege(pr.PrivilegeNumber.GetInteger()) },
                    { 3, PrivilegeType.Modify.CheckPrivilege(pr.PrivilegeNumber.GetInteger()) },
                    { 4, PrivilegeType.Delete.CheckPrivilege(pr.PrivilegeNumber.GetInteger()) },
                    { 5, PrivilegeType.Export.CheckPrivilege(pr.PrivilegeNumber.GetInteger()) },
                    { 6, PrivilegeType.Import.CheckPrivilege(pr.PrivilegeNumber.GetInteger()) }
                };
                if (!string.IsNullOrEmpty(pr.ResourceName) && !roles.ContainsKey(pr.ResourceName))
                {
                    roles.Add(pr.ResourceName, role);
                }
                //   pr.ResourceNameTranslate = pr.ResourceName;
                pr.ResourceNameTranslate = ("HRM_System_Resource_" + pr.ResourceName).TranslateString();

                if (!string.IsNullOrEmpty(pr.ResourceType))
                {
                    pr.ResourceTypeTranslate = ("HRM_System_Resource_" + pr.ResourceType).TranslateString();
                }
                // pr.ResourceNameTranslate = (pr.ResourceName).TranslateString();
            }
            model.Allowed = roles;

            #region Dictionary resource
            //Lay danh sach resource để load lên list (bao gồm cả module cha) đã group theo module
            var      dictionary     = new Dictionary <string, List <Sys_GroupPermissionModel> >();
            string[] listModuleName = typeof(HRM.Infrastructure.Utilities.ModuleName).GetEnumNames();
            if (listModuleName != null && listModuleName.Any())
            {
                foreach (var moduleName in listModuleName)
                {
                    var moduleResource = listAvailablePermissions.Where(p => p.Category == moduleName).OrderBy(p => p.ResourceType).ToList();
                    #region bản 7 xử lý category salary là Payroll => nên sẽ add thêm những resource (category = "Payroll") vào category là Salary (mà không cần sửa lại bản 7)
                    if (moduleName == HRM.Infrastructure.Utilities.ModuleName.Salary.ToString())
                    {
                        var modulePayrollResource = listAvailablePermissions.Where(p => p.Category == "Payroll" && (p.ModuleName != null || p.ResourceType != null)).OrderBy(p => p.ResourceType).ToList();
                        moduleResource.AddRange(modulePayrollResource);
                    }
                    #endregion

                    var firstModule = listAvailablePermissions.Where(p => p.ResourceName == moduleName).FirstOrDefault();
                    moduleResource.Insert(0, firstModule);
                    if (!string.IsNullOrEmpty(moduleName) && !dictionary.ContainsKey(moduleName))
                    {
                        dictionary.Add(moduleName, moduleResource);
                    }
                }
            }
            ViewBag.listResource = dictionary;
            var groupId = Guid.Empty;
            if (listAvailablePermissions.Any())
            {
                groupId = listAvailablePermissions.FirstOrDefault().GroupID;

                if (groupId != Guid.Empty)
                {
                    var groupService = new RestServiceClient <Sys_GroupModel>(UserLogin);
                    groupService.SetCookies(Request.Cookies, hrm_Sys_Service);
                    var modelGroup = groupService.Get(hrm_Sys_Service, "api/Sys_Group/", groupId);
                    if (modelGroup != null)
                    {
                        model.Code       = modelGroup.Code;
                        model.Notes      = modelGroup.Notes;
                        model.GroupName  = modelGroup.GroupName;
                        model.IsActivate = modelGroup.IsActivate;
                    }
                }
            }
            ViewBag.groupId = groupId;
            #endregion

            return(View(model));
        }