/// <summary> /// 初始化祖先的OUs /// </summary> /// <param name="currentObj">当前对象</param> public void InitAncestorOUs(IOguObject currentObj) { IOguPropertyAccessible wrapper = (IOguPropertyAccessible)currentObj; string parentID = (string)currentObj.Properties["ParentID"]; Debug.Assert(string.IsNullOrEmpty(parentID) == false); Dictionary <string, SCSimpleObjectCollection> parentMap = PC.Adapters.SCSnapshotAdapter.Instance.LoadAllParentsInfo(true, parentID); SCSimpleObjectCollection parents = parentMap[parentID]; List <string> idList = new List <string>(parents.ToIDArray()); //idList.Add(parentID); OguObjectCollection <IOrganization> orgs = this.GetObjects <IOrganization>(SearchOUIDType.Guid, idList.ToArray()); ((IOguPropertyAccessible)currentObj).Parent = orgs.Find(obj => obj.ID == parentID); wrapper = (IOguPropertyAccessible)wrapper.Parent; for (int i = parents.Count - 1; i >= 0; i--) { var org = orgs.Find(obj => obj.ID == parents[i].ID); if (org != null && org.DepartmentType != DepartmentTypeDefine.XuNiJiGou) { wrapper.Parent = orgs.Find(obj => obj.ID == parents[i].ID); wrapper = (IOguPropertyAccessible)wrapper.Parent; } } }
public int DisplaceUserInRoleMatrix(string roleID, string userID, string[] displacingUserIDArray) { IUser originalUser = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, userID).FirstOrDefault(); OguObjectCollection <IUser> displacingUsers = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, displacingUserIDArray); string originalUserCodeName = originalUser != null ? originalUser.LogOnName : string.Empty; List <string> desplacingUserCodeNames = new List <string>(); foreach (IUser user in displacingUsers) { if (desplacingUserCodeNames.Contains(user.LogOnName) == false) { desplacingUserCodeNames.Add(user.LogOnName); } } SOARolePropertyRowCollection rows = SOARolePropertiesAdapter.Instance.LoadByRoleID(roleID, null); int result = rows.ReplaceOperators(SOARoleOperatorType.User, originalUserCodeName, desplacingUserCodeNames.ToArray()); SOARolePropertiesAdapter.Instance.Update(roleID, rows); return(result); }
public int DisplaceUserInProcessMatrix(string processDespKey, string userID, string[] displacingUserIDArray) { WfMatrix matrix = WfMatrixAdapter.Instance.LoadByProcessKey(processDespKey, true); IUser originalUser = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, userID).FirstOrDefault(); OguObjectCollection <IUser> displacingUsers = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, displacingUserIDArray); string originalUserCodeName = originalUser != null ? originalUser.LogOnName : string.Empty; List <string> desplacingUserCodeNames = new List <string>(); foreach (IUser user in displacingUsers) { if (desplacingUserCodeNames.Contains(user.LogOnName) == false) { desplacingUserCodeNames.Add(user.LogOnName); } } int result = matrix.Rows.ReplcaeOperators(WfMatrixOperatorType.Person, originalUserCodeName, desplacingUserCodeNames.ToArray()); using (TransactionScope scope = TransactionScopeFactory.Create()) { WfMatrixAdapter.Instance.Update(matrix); scope.Complete(); } return(result); }
private void tree_GetChildrenData(DeluxeTreeNode parentNode, DeluxeTreeNodeCollection result, string callBackContext) { ServiceBrokerContext.Current.SaveContextStates(); try { InnerTreeContext context = JSONSerializerExecute.Deserialize <InnerTreeContext>(callBackContext); if (context.ShowDeletedObjects) { ServiceBrokerContext.Current.UseLocalCache = false; ServiceBrokerContext.Current.ListObjectCondition = ListObjectMask.All; } else { ServiceBrokerContext.Current.ListObjectCondition = ListObjectMask.Common; } OguObjectCollection <IOguObject> parents = UserOUControlSettings.GetConfig().UserOUControlQuery.GetObjects(((IOguObject)parentNode.ExtendedData).ID); //; OguMechanismFactory.GetMechanism().GetObjects<IOguObject>( // SearchOUIDType.Guid, ((IOguObject)parentNode.ExtendedData).ID); BindChildren(result, OnGetChildren(parents[0]), context.MultiSelect, context.ListMask, context.SelectMask); } finally { ServiceBrokerContext.Current.RestoreSavedStates(); } }
private void signInControl_AfterSignIn(SignInContext context) { if (context.ResultType == SignInResultType.Success) { if (PassportSignInSettings.GetConfig().UseSimulateTime) { context.SignInInfo.Properties["SimulateTime"] = this.simulateDate.Value; IPersistTimePoint persister = TimePointSimulationSettings.GetConfig().Persister; if (persister != null) { OguObjectCollection <IUser> users = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.LogOnName, context.SignInInfo.UserID); if (users.Count > 0) { persister.SaveTimePoint(users[0].ID, this.simulateDate.Value); TimePointContext tpc = new TimePointContext(); tpc.UseCurrentTime = this.simulateDate.Value == DateTime.MinValue; tpc.SimulatedTime = this.simulateDate.Value; tpc.SaveToCookie(); } } } } }
/// <summary> /// /// </summary> /// <param name="argument"></param> public override void Execute(string argument) { string[] args = argument.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); ExceptionHelper.FalseThrow(args.Length > 0, "查询人员的角色必须提供登录名"); OguObjectCollection <IUser> users = QueryHelper.QueryUser(args[0]); foreach (IUser user in users) { if (args.Length > 1) { user.Roles[args[1]].ToList().ForEach(obj => OutputHelper.OutputPermissionInfo(obj)); } else { List <IRole> roles = user.Roles.GetAllRoles(); foreach (IRole role in roles) { if (role.Application != null) { Console.WriteLine("Application"); OutputHelper.OutputPermissionInfo(role.Application); } Console.WriteLine("Role"); OutputHelper.OutputPermissionInfo(role); } } } }
private void GetApplicationRole() { List <AppRoles> allRoles = new List <AppRoles>(); OguObjectCollection <IUser> users = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, Data.ID); ExceptionHelper.FalseThrow(users.Count > 0, "不能找到ID为\"{0}\"的用户", Data.ID); ApplicationCollection result = PermissionMechanismFactory.GetMechanism().GetAllApplications(); foreach (IApplication app in result) { RoleCollection roles = users[0].Roles[app.CodeName]; if (roles.Count > 0) { AppRoles ar = new AppRoles(); ar.AppName = app.Name; ar.Roles = GetRoleNames(roles); allRoles.Add(ar); } } gridAppRoles.DataSource = allRoles; gridAppRoles.DataBind(); }
/// <summary> /// /// </summary> /// <param name="argument"></param> public override void Execute(string argument) { string[] args = argument.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); ExceptionHelper.FalseThrow(args.Length > 0, "查询人员的权限必须提供登录名"); OguObjectCollection <IUser> users = QueryHelper.QueryUser(args[0]); foreach (IUser user in users) { if (args.Length > 1) { user.Permissions[args[1]].ToList().ForEach(obj => OutputHelper.OutputPermissionInfo(obj)); } else { Dictionary <IApplication, PermissionCollection> appRoles = user.Permissions.GetAllAppPermissions(); foreach (KeyValuePair <IApplication, PermissionCollection> kp in appRoles) { Console.WriteLine("Application"); OutputHelper.OutputPermissionInfo(kp.Key); if (kp.Value.Count > 0) { Console.WriteLine("Permissions"); kp.Value.ForEach(obj => OutputHelper.OutputPermissionInfo(obj)); } } } } }
protected void DefaultProcessRequest(string fpath) { OguObjectCollection <IUser> user = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.FullPath, fpath); foreach (IUser userObj in user) { UserInfoExtendCollection collection = UserInfoExtendDataObjectAdapter.Instance.Load(builder => builder.AppendItem("ID", userObj.ID)); if (collection.Count > 0) { Data = collection[0]; } if (collection.Count == 0) { Data = new UserInfoExtendDataObject() { ID = userObj.ID } } ; Data.DisplayName = userObj.DisplayName; Data.FullPath = userObj.FullPath; Data.LogonName = userObj.LogOnName; } }
public void WfGroupResourceDescriptorConverterTest() { WfConverterHelper.RegisterConverters(); IUser user = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object; OguObjectCollection <IGroup> groupColl = user.MemberOf; foreach (var group in groupColl) { WfGroupResourceDescriptor groupDesp = new WfGroupResourceDescriptor(group); string result = JSONSerializerExecute.Serialize(groupDesp); Console.WriteLine(result); WfGroupResourceDescriptor deserializedGroupDesp = JSONSerializerExecute.Deserialize <WfGroupResourceDescriptor>(result); string reSerialized = JSONSerializerExecute.Serialize(deserializedGroupDesp); Assert.AreEqual(result, reSerialized); ResourceConverterTest(groupDesp); } }
private static IUser GetUserInfoFromID(string userID) { OguObjectCollection <IUser> users = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, userID); ExceptionHelper.FalseThrow <AuthenticateException>(users.Count > 0, Resource.CanNotFindUser, userID); return(users[0]); }
public static OguObjectCollection <IOguObject> QueryObjectByFullPath(string fullPath) { OguObjectCollection <IOguObject> objs = OguMechanismFactory.GetMechanism().GetObjects <IOguObject>(SearchOUIDType.FullPath, fullPath); ExceptionHelper.FalseThrow(objs.Count != 0, "不能根据FullPath'{0}'找到对象", fullPath); return(objs); }
public static OguObjectCollection <IOguObject> QueryObjectByID(string objectID) { OguObjectCollection <IOguObject> objs = OguMechanismFactory.GetMechanism().GetObjects <IOguObject>(SearchOUIDType.Guid, objectID); ExceptionHelper.FalseThrow(objs.Count != 0, "不能根据ID'{0}'找到对象", objectID); return(objs); }
public static IUser QueryUser(string logonName) { OguObjectCollection <IUser> users = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.LogOnName, logonName); ExceptionHelper.FalseThrow(users.Count != 0, "不能根据登录名'{0}'找到用户", logonName); return(users[0]); }
private OguDataCollection <IOguObject> QueryChildrenBySelectMask(IOrganization dept, string searchString) { ServiceBrokerContext.Current.SaveContextStates(); var SelectMask = UserControlObjectMask.All; var MaxQueryCount = 15; try { ServiceBrokerContext.Current.ListObjectCondition = ListObjectMask.All; OguDataCollection <IOguObject> result = new OguDataCollection <IOguObject>(); if (SelectMask == UserControlObjectMask.Organization) { OguObjectCollection <IOrganization> orgs = dept.QueryChildren <IOrganization>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization org in orgs) { result.Add(org); } } else if (SelectMask == UserControlObjectMask.Group) { OguObjectCollection <IGroup> groups = dept.QueryChildren <IGroup>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization group in groups) { result.Add(group); } } else if (SelectMask == UserControlObjectMask.User || SelectMask == (UserControlObjectMask.User | UserControlObjectMask.Sideline)) { OguObjectCollection <IUser> users = dept.QueryChildren <IUser>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IUser user in users) { result.Add(user); } } else { if ((int)(SelectMask & (UserControlObjectMask.Group | UserControlObjectMask.User | UserControlObjectMask.Organization)) != 0) { OguObjectCollection <IOguObject> objs = dept.QueryChildren <IOguObject>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOguObject obj in objs) { result.Add(obj); } } } return(result); } finally { ServiceBrokerContext.Current.RestoreSavedStates(); } }
/// <summary> /// /// </summary> /// <param name="argument"></param> public override void Execute(string argument) { OguObjectCollection <IUser> users = QueryHelper.QueryUser(argument); foreach (IUser user in users) { user.Parent.Children.ToList().ForEach(obj => OutputHelper.OutputObjectInfo(obj)); } }
protected internal override void FillUsers(OguDataCollection <IUser> users) { if (this._Department != null) { OguObjectCollection <IUser> children = this._Department.GetAllChildren <IUser>(true); children.ForEach(u => users.Add(u)); } }
/// <summary> /// /// </summary> /// <param name="argument"></param> public override void Execute(string argument) { OguObjectCollection <IUser> users = QueryHelper.QueryUser(argument); foreach (IUser user in users) { OutputHelper.OutputObjectInfo(user.TopOU); } }
/// <summary> /// /// </summary> /// <param name="argument"></param> public override void Execute(string argument) { OguObjectCollection <IOguObject> groups = QueryHelper.QueryObjectByFullPath(argument); foreach (IGroup group in groups) { group.Members.ToList().ForEach(obj => OutputHelper.OutputObjectInfo(obj)); } }
protected internal override void FillUsers(OguDataCollection <OGUPermission.IUser> users) { if (this._Group != null) { OguObjectCollection <IUser> children = this._Group.Members; children.ForEach(u => users.Add(u)); } }
private OguDataCollection <IOguObject> QueryChildrenBySelectMask(IOrganization dept, string searchString) { ServiceBrokerContext.Current.SaveContextStates(); try { var queryImpl = UserOUControlSettings.GetConfig().UserOUControlQuery; ServiceBrokerContext.Current.ListObjectCondition = ShowDeletedObjects ? ListObjectMask.All : ListObjectMask.Common; OguDataCollection <IOguObject> result = new OguDataCollection <IOguObject>(); if (SelectMask == UserControlObjectMask.Organization) { OguObjectCollection <IOrganization> orgs = queryImpl.QueryDescendants <IOrganization>(SchemaQueryType.Organizations, dept, searchString, MaxQueryCount); //dept.QueryChildren<IOrganization>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization org in orgs) { result.Add(org); } } else if (SelectMask == UserControlObjectMask.Group) { OguObjectCollection <IGroup> groups = queryImpl.QueryDescendants <IGroup>(SchemaQueryType.Groups, dept, searchString, MaxQueryCount); // dept.QueryChildren<IGroup>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IGroup group in groups) { result.Add(group); } } else if (SelectMask == UserControlObjectMask.User || SelectMask == (UserControlObjectMask.User | UserControlObjectMask.Sideline)) { OguObjectCollection <IUser> users = queryImpl.QueryDescendants <IUser>(SchemaQueryType.Groups, dept, searchString, MaxQueryCount); //dept.QueryChildren<IUser>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IUser user in users) { result.Add(user); } } else { if ((int)(SelectMask & (UserControlObjectMask.Group | UserControlObjectMask.User | UserControlObjectMask.Organization)) != 0) { OguObjectCollection <IOguObject> objs = queryImpl.QueryDescendants <IOguObject>(SchemaQueryType.Users | SchemaQueryType.Groups | SchemaQueryType.Organizations, dept, searchString, MaxQueryCount); //dept.QueryChildren<IOguObject>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOguObject obj in objs) { result.Add(obj); } } } return(result); } finally { ServiceBrokerContext.Current.RestoreSavedStates(); } }
/// <summary> /// /// </summary> /// <param name="argument"></param> public override void Execute(string argument) { OguObjectCollection <IOguObject> ogus = QueryHelper.QueryObjectByFullPath(argument); (ogus[0] is IOrganization).FalseThrow("对象\"{0}\"不是一个组织", argument); IOrganization ogu = (IOrganization)ogus[0]; ogu.GetAllChildren <IOguObject>(true).ForEach(o => OutputHelper.OutputObjectInfo(o)); }
public int DisplaceUserInProcess(string processID, string userID, string[] displacingUserIDArray) { IUser originalUser = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, userID).FirstOrDefault(); OguObjectCollection <IUser> displacingUsers = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, displacingUserIDArray); List <IUser> distinctUsers = new List <IUser>(); foreach (IUser user in displacingUsers) { if (distinctUsers.Exists(u => u.ID == user.ID) == false) { distinctUsers.Add(user); } } IWfProcess process = WfRuntime.GetProcessByProcessID(processID); int result = 0; foreach (IWfActivity activity in process.Activities) { bool needReplace = false; if (activity.Status != WfActivityStatus.Completed && activity.Status != WfActivityStatus.Aborted) { if (activity.Status == WfActivityStatus.Running || activity.Status == WfActivityStatus.Pending) { needReplace = activity.Assignees.Contains(originalUser.ID); } else { needReplace = activity.Candidates.Contains(originalUser.ID); } if (needReplace) { WfReplaceAssigneesExecutor executor = new WfReplaceAssigneesExecutor(null, activity, originalUser, distinctUsers); executor.ExecuteNotPersist(); result++; } } } using (TransactionScope scope = TransactionScopeFactory.Create()) { WfReplaceAssigneesExecutor.DoUserTaskOperations(); WfRuntime.PersistWorkflows(); scope.Complete(); } return(result); }
public IOrganization GetOrganizationByPath(string rootPath) { OguObjectCollection <IOrganization> orgs = OguMechanismFactory.GetMechanism().GetObjects <IOrganization>(SearchOUIDType.FullPath, rootPath); if (orgs.Count == 0) { throw new ArgumentException(string.Format("不能找到路径为\"{0}\"的根组织", rootPath)); } return(orgs[0]); }
public Dictionary <string, IEnumerable <IOrganization> > QueryObjectsParents(params string[] ids) { Dictionary <string, IEnumerable <IOrganization> > result = new Dictionary <string, IEnumerable <IOrganization> >(); OguObjectCollection <IOguObject> objs = OguMechanismFactory.GetMechanism().GetObjects <IOguObject>(SearchOUIDType.Guid, ids); foreach (IOguObject obj in objs) { result[obj.ID] = GetAllParents(obj); } return(result); }
private static void FillPersonTypeUsers(WfMatrixRowUsersCollection rowsUsers) { Dictionary <string, string> userIDs = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); foreach (WfMatrixRowUsers rowUsers in rowsUsers) { if (rowUsers.Row.OperatorType == WfMatrixOperatorType.Person) { foreach (string id in rowUsers.ObjectIDs) { userIDs[id] = id; } } } List <string> logonNames = new List <string>(); foreach (KeyValuePair <string, string> kp in userIDs) { logonNames.Add(kp.Key); } OguObjectCollection <IUser> users = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.LogOnName, logonNames.ToArray()); if (WfRuntime.ProcessContext.CurrentProcess != null) { users = users.FilterUniqueSidelineUsers(WfRuntime.ProcessContext.CurrentProcess.OwnerDepartment); } Dictionary <string, IUser> userDicts = GenerateUserDictionary(users); foreach (WfMatrixRowUsers rowUsers in rowsUsers) { if (rowUsers.Row.OperatorType == WfMatrixOperatorType.Person) { foreach (string id in rowUsers.ObjectIDs) { IUser user = null; if (userDicts.TryGetValue(id, out user)) { if (rowUsers.Users.Exists(u => string.Compare(u.ID, user.ID, true) == 0) == false) { rowUsers.Users.Add((IUser)OguUser.CreateWrapperObject(user)); } } } } } }
/// <summary> /// 根据童虎的不变ID,得到用户的登录名 /// </summary> /// <param name="consistentID"></param> /// <returns></returns> public string GetUserLogonName(string consistentID) { consistentID.CheckStringIsNullOrEmpty("consistentID"); OguObjectCollection <IUser> users = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, consistentID); string result = string.Empty; if (users.Count > 0) { result = users[0].LogOnName; } return(result); }
/// <summary> /// 从Ticket token构造Identity /// </summary> /// <param name="tokenContainer"></param> /// <param name="ticket"></param> public DeluxeIdentity(GenericTicketTokenContainer tokenContainer, ITicket ticket) { tokenContainer.NullCheck("tokenContainer"); tokenContainer.User.NullCheck("tokenContainer.User"); tokenContainer.RealUser.NullCheck("tokenContainer.RealUser"); OguObjectCollection <IUser> users = GetUsersInfoFromIDs(tokenContainer.User.ID, tokenContainer.RealUser.ID); this.user = users.Find(u => string.Compare(u.ID, tokenContainer.User.ID, true) == 0); this.realUser = users.Find(u => string.Compare(u.ID, tokenContainer.RealUser.ID, true) == 0); this.user.NullCheck("user"); this.realUser.NullCheck("realUser"); this.ticket = ticket; }
/// <summary> /// /// </summary> /// <param name="argument"></param> public override void Execute(string argument) { OguObjectCollection <IUser> users = QueryHelper.QueryUser(argument); foreach (IUser user in users) { if (user.Parent != null) { OutputHelper.OutputObjectInfo(user.Parent); } else { Console.WriteLine("User doesn't have parent."); } } }
/// <summary> /// 得到某一级组织下人员(带兼职)的详细信息。 /// 权限中心的Organization的Children属性,仅仅返回子对象的基本属性,这个方法是通过再查询一次权限中心,继而得到完整的属性 /// </summary> /// <param stringValue="allOguChildren"></param> /// <returns></returns> private static IList <IUser> GetUserDetailInfo(OguObjectCollection <IOguObject> allOguChildren) { List <string> childrenIDs = new List <string>(); foreach (IOguObject child in allOguChildren) { if (child is IUser) { if (SynchronizeContext.Current.IsRealObject(child)) { childrenIDs.Add(child.ID); } } } return(OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, childrenIDs.ToArray()).ToList()); }
//可考虑扩展方法 private static bool IsSameMembers(OguObjectCollection<IUser> oguGroupMembers, Dictionary<string, ADObjectWrapper> adGroupMembers) { bool result = true; if (oguGroupMembers.Count == adGroupMembers.Count) { foreach (IUser user in oguGroupMembers) { if (adGroupMembers.ContainsKey(user.ID) == false) { result = false; break; } } } else result = false; return result; }