public DomainDataUser(DomainUserInfo domainUserInfo, DomainUserState domainUserState) { this.UserID = domainUserInfo.UserID; this.UserName = domainUserInfo.UserName; this.Location = domainUserInfo.Location; this.IsBeingEdited = domainUserState.HasFlag(DomainUserState.IsBeingEdited); this.Background = new SolidColorBrush(domainUserInfo.GetColor()); }
public void InvokeUserRemoved(Authentication authentication, DomainUserInfo domainUserInfo, RemoveInfo removeInfo) { this.dispatcher.VerifyAccess(); var domainUser = this.users[domainUserInfo.UserID]; this.users.Remove(domainUser.ID); if (domainUser.IsOwner == true) this.users.Owner = null; this.OnUserRemoved(new DomainUserRemovedEventArgs(authentication, this, domainUser, removeInfo)); this.Container.InvokeDomainUserRemovedEvent(authentication, this, domainUser, removeInfo); }
public void InvokeUserAdded(Authentication authentication, DomainUserInfo domainUserInfo, DomainUserState domainUserState) { this.dispatcher.VerifyAccess(); var domainUser = new DomainUser(this, domainUserInfo, domainUserState); this.users.Add(domainUser); if (domainUser.IsOwner == true) this.users.Owner = domainUser; this.OnUserAdded(new DomainUserEventArgs(authentication, this, domainUser)); this.Container.InvokeDomainUserAddedEvent(authentication, this, domainUser); }
public void InvokeUserChanged(Authentication authentication, DomainUserInfo domainUserInfo, DomainUserState domainUserState) { this.dispatcher.VerifyAccess(); var domainUser = this.users[domainUserInfo.UserID]; domainUser.SetDomainUserInfo(domainUserInfo); domainUser.SetDomainUserState(domainUserState); if (domainUser.IsOwner == true) this.users.Owner = domainUser; this.OnUserChanged(new DomainUserEventArgs(authentication, this, domainUser)); this.Container.InvokeDomainUserChangedEvent(authentication, this, domainUser); }
public void Set(DomainUserInfo item, DomainUserState domainUserState) { for (var i = 0; i < this.Count; i++) { if (this[i].UserID == item.UserID) { this[i] = new DomainDataUser(item, domainUserState); return; } } this.Add(new DomainDataUser(item, domainUserState)); }
public DomainUserDescriptor(Authentication authentication, IDomainUser domainUser, DescriptorTypes descriptorTypes, object owner) : base(authentication, domainUser, descriptorTypes) { this.domainUser = domainUser; this.owner = owner ?? this; this.domainUser.Dispatcher.VerifyAccess(); this.domainUserInfo = domainUser.DomainUserInfo; this.domainUserState = domainUser.DomainUserState; if (this.descriptorTypes.HasFlag(DescriptorTypes.IsSubscriptable) == true) { this.domainUser.DomainUserInfoChanged += DomainUser_DomainUserInfoChanged; this.domainUser.DomainUserStateChanged += DomainUser_DomainUserStateChanged; } }
public DomainUserDescriptor(Authentication authentication, IDomainUserDescriptor descriptor, DescriptorTypes descriptorTypes, object owner) : base(authentication, descriptor.Target, descriptorTypes) { this.domainUser = descriptor.Target; this.owner = owner ?? this; this.domainUser.Dispatcher.VerifyAccess(); this.domainUserInfo = domainUser.DomainUserInfo; this.domainUserState = domainUser.DomainUserState; if (this.descriptorTypes.HasFlag(DescriptorTypes.IsSubscriptable) == true && descriptor is INotifyPropertyChanged obj) { obj.PropertyChanged += Descriptor_PropertyChanged; this.disposeAction = new Action(() => obj.PropertyChanged -= Descriptor_PropertyChanged); } }
public static Color GetColor(this DomainUserInfo domainUserInfo) { if (idToColor.ContainsKey(domainUserInfo.UserID) == false) { if (emptyColors.Count == 0) { emptyColors.AddRange(colors); emptyColors.Remove(AppearanceManager.Current.AccentColor); } int index = random.Next() % emptyColors.Count; idToColor.Add(domainUserInfo.UserID, emptyColors[index]); emptyColors.RemoveAt(index); } return(idToColor[domainUserInfo.UserID]); }
private void Descriptor_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName != string.Empty) { var prop1 = sender.GetType().GetProperty(e.PropertyName); var prop2 = this.GetType().GetProperty(e.PropertyName); if (prop1 != null && prop1.CanRead == true && prop2 != null && prop2.CanWrite == true) { var value = prop1.GetValue(sender); prop2.SetValue(this, value); } } else if (sender is IDomainUserDescriptor descriptor) { this.domainUserInfo = descriptor.DomainUserInfo; this.domainUserState = descriptor.DomainUserState; } this.NotifyOfPropertyChange(e.PropertyName); }
/// <summary> /// 获取域用户信息 /// </summary> /// <param name="domainUserName"></param> /// <returns></returns> public static DomainUserInfo GetDomainUserInfo(string domainUserName) { try { if (string.IsNullOrEmpty(domainUserName)) { return(null); } var userArr = domainUserName.Split('\\'); var domain = userArr[0]; var loginName = userArr[1]; var entry = new DirectoryEntry(string.Concat("LDAP://", domain)); var search = new DirectorySearcher(entry); search.Filter = string.Format("(SAMAccountName={0})", loginName); search.PropertiesToLoad.Add("SAMAccountName"); search.PropertiesToLoad.Add("givenName"); search.PropertiesToLoad.Add("cn"); search.PropertiesToLoad.Add("mail"); var result = search.FindOne(); if (result != null) { var info = new DomainUserInfo { SamAccountName = result.Properties["SAMAccountName"][0].ToString(), GivenName = result.Properties["givenName"][0].ToString(), Cn = result.Properties["cn"][0].ToString(), Email = result.Properties["mail"][0].ToString() }; return(info); } } catch (Exception ex) { LogUtil.WriteException(ex); } return(null); }
private void DomainUser_DomainUserInfoChanged(object sender, EventArgs e) { this.domainUserInfo = this.domainUser.DomainUserInfo; this.Dispatcher.InvokeAsync(this.RefreshAsync); }
public DomainUser(Domain domain, DomainUserInfo domainUserInfo, DomainUserState domainUserState) { this.domain = domain; base.DomainUserInfo = domainUserInfo; base.DomainUserState = domainUserState; }
public void SetDomainUserInfo(DomainUserInfo domainUserInfo) { base.DomainUserInfo = domainUserInfo; }
void IDomainServiceCallback.OnUserChanged(SignatureDate signatureDate, Guid domainID, DomainUserInfo domainUserInfo, DomainUserState domainUserState) { this.InvokeAsync(() => { var domain = this.Domains[domainID]; var authentication = this.userContext.Authenticate(signatureDate); domain.InvokeUserChanged(authentication, domainUserInfo, domainUserState); }, nameof(IDomainServiceCallback.OnUserChanged)); }
public DomainUserEventArgs(Authentication authentication, IDomain domain, IDomainUser domainUser) : base(authentication, domain) { this.domainUserInfo = domainUser.DomainUserInfo; this.domainUserState = domainUser.DomainUserState; }