private ProfileGroup GetGroup(string module, string name, string groupDesc = "")
 {
     foreach (ProfileGroup g in (IList<ProfileGroup>)ViewData[module])
     {
         if (g.Name == name)
         {
             return g;
         }
     }
     ProfileGroup group = new ProfileGroup();
     group.Name = name;
     group.Description = string.IsNullOrWhiteSpace(groupDesc) ? group.Name : groupDesc;
     ((IList<ProfileGroup>)ViewData[module]).Add(group);
     return group;
 }
 private void InitResPermission()
 {
     ViewBag.Modules = new List<string>();
     ViewBag.ModuleDesc = new Dictionary<string, string>();
     ProfileSchemaConfig profileConfig = (ProfileSchemaConfig)ConfigurationManager.GetSection(XCRM.Access.Profile.PROFILE_SCHEMA_CONFIG_SECTION);
     foreach (ModuleConfig module in profileConfig.Modules)
     {
         ViewBag.Modules.Add(module.Name);
         ViewBag.ModuleDesc.Add(module.Name, string.IsNullOrWhiteSpace(module.Description) ? module.Name : module.Description);
         ViewData[module.Name] = new List<ProfileGroup>();
         if (string.IsNullOrWhiteSpace(module.Groups))
         {
             ProfileGroup pg = new ProfileGroup();
             pg.Name = ProfileGroup.DEFAULT_NAME;
             pg.Description = string.IsNullOrWhiteSpace(module.Description) ? module.Name : module.Description;
             foreach (PermissionConfig permission in module.Permissions)
             {
                 AddPermisson(pg, module, permission);
             }
             ((List<ProfileGroup>)ViewData[module.Name]).Add(pg);
         }
         else
         {
             string[] group = module.Groups.Split(new string[] { ModuleConfig.GROUP_SPLITE }, StringSplitOptions.RemoveEmptyEntries);
             string[] groupDesc = module.GroupsDesc.Split(new string[] { ModuleConfig.GROUP_SPLITE }, StringSplitOptions.RemoveEmptyEntries);
             foreach (PermissionConfig permission in module.Permissions)
             {
                 int index = FindGroupDesc(permission.Group, group);
                 ProfileGroup pg = GetGroup(module.Name, permission.Group, index == -1 ? "" : groupDesc[index]);
                 AddPermisson(pg, module, permission);
             }
         }
     }
 }
 private string AddPermisson(ProfileGroup pg, ModuleConfig module, PermissionConfig permission)
 {
     Permission p = new Permission();
     p.Path = "/" + module.Name + permission.Path;
     p.Type = permission.Type;
     p.Name = permission.Name;
     string[] actions = permission.Action.Split(new string[] { ModuleConfig.GROUP_SPLITE }, StringSplitOptions.RemoveEmptyEntries);
     string[] actionDesc = permission.ActionDesc.Split(new string[] { ModuleConfig.GROUP_SPLITE }, StringSplitOptions.RemoveEmptyEntries);
     for (int i = 0; i < actions.Length; i++)
     {
         Action action = new Action(actionDesc[i], int.Parse(actions[i]));
         if (!p.ActionList.Contains(action))
         {
             p.ActionList.Add(action);
         }
     }
     pg.Permissions.Add(p);
     return p.Path;
 }