public IRole CreateRole(string roleName, string group) { Assert.EmptyString(roleName, "roleName"); IRole role = null; Sync(() => { role = GetRoleInternal(roleName, false); if (role == null) { var model = new RoleModel() { RoleName = roleName, GroupName = group }; if (_store.Save(model)) { role = new RoleImpl(model); _roles[roleName.ToLower()] = role; } else { throw new Exception("Não foi possivel criar o esquema de usuários - erro ao persistir as informações"); } } else { throw new Exception("Já existe um papel com o nome " + roleName); } }); return(role); }
public IRole[] GetRoles() { if (!_allRolesLoaded) { Sync(() => { if (_allRolesLoaded) { return; } _allRolesLoaded = true; var qry = _store.CreateQuery <RoleModel>(); var roles = qry.Find(); IRole role = null; foreach (var roleModel in roles) { if (!_roles.TryGetValue(roleModel.RoleName.ToLower(), out role)) { role = new RoleImpl(roleModel); _roles[role.Name.ToLower()] = role; } } }); } return(_roles.Values.OrderBy(r => r.Name).ToArray()); }
/// <summary> /// /// </summary> /// <param name="rolePath">应用名称:角色名称</param> /// <returns></returns> public static OguObjectCollection <IUser> GetUsersInRole(string rolePath) { OguObjectCollection <IUser> result = null; int splitterCharIndex = rolePath.IndexOf(':'); if (splitterCharIndex <= 0) { result = new OguObjectCollection <IUser>(); } else { string appName = rolePath.Substring(0, splitterCharIndex); string roleNames = rolePath.Substring(splitterCharIndex + 1); result = RoleImpl.GetUsersFromRoles("", appName, roleNames, DelegationMaskType.All, SidelineMaskType.All, ""); } return(result); }
public IRole GetRoleInternal(String roleName, bool throwIfNotExists) { IRole result = null; roleName = roleName.ToLower(); if (!_roles.TryGetValue(roleName, out result)) { var qry = _store.CreateQuery <RoleModel>(); qry.AddFilterEqual("RoleName", roleName); var model = qry.FindFirst(); if (model != null) { result = new RoleImpl(model); _roles[roleName] = result; } } if (result == null && throwIfNotExists) { throw new InvalidOperationException(String.Format("Não existe um papel com o nome " + roleName)); } return(result); }