/// <summary> /// 根据描述得到一组角色集合 /// </summary> /// <param name="rolesDesp"></param> /// <returns></returns> public static IRole[] GetRoles(string rolesDesp) { List <IRole> result = new List <IRole>(); if (string.IsNullOrEmpty(rolesDesp) == false) { AppRolesDespsCollection allAppRolesDesps = GetAppRolesDesps(rolesDesp); ApplicationCollection apps = PermissionMechanismFactory.GetMechanism().GetApplications(allAppRolesDesps.GetAppNames()); foreach (AppRolesDesps appRolesDesps in allAppRolesDesps) { if (apps.ContainsKey(appRolesDesps.AppName)) { IApplication app = apps[appRolesDesps.AppName]; foreach (string roleName in appRolesDesps.RolesDesp) { if (app.Roles.ContainsKey(roleName)) { result.Add(app.Roles[roleName]); } } } } } return(result.ToArray()); }
private static AppRolesDespsCollection GetAppRolesDesps(string rolesDesp) { AppRolesDespsCollection appRolesDesps = new AppRolesDespsCollection(); string[] appRoles = rolesDesp.Split(';'); for (int i = 0; i < appRoles.Length; i++) { string[] oneAppRoles = appRoles[i].Split(':'); ExceptionHelper.FalseThrow <AuthenticateException>(oneAppRoles.Length == 2, Resource.InvalidAppRoleNameDescription); string appName = oneAppRoles[0].Trim(); string[] roles = oneAppRoles[1].Split(','); appRolesDesps.Add(new AppRolesDesps { AppName = appName, RolesDesp = roles }); } return(appRolesDesps); }