マイナーでもいいよね??

殆どVB系、でも .NET じゃない VB は知らないよん

目次

Blog 利用状況

書庫

日記カテゴリ

ドメインユーザ用のクラス

ドメインユーザを表すクラス DomainUser クラスは DomainObject クラスを継承し IUser インターフェイスを実装します。

Webアプリでデータソースとして使えるようにします。

C#のコードはのちほど。まずは VBのコード。

 

<DataObject()>

Public NotInheritable Class DomainUser

  Inherits DomainObject

  Implements IUser

 

#Region " プライベートフィールド "

  Private ReadOnly _name As String

#End Region

 

#Region " フレンドコンストラクタ "

  'DirectoryEntry を指定して DomainUser クラスの新しいインスタンスを初期化します。

  Friend Sub New(entry As DirectoryEntry)

    MyBase.New(entry)

    _name = entry.Properties.Item("sAMAccountName").Value.ToString()

  End Sub

#End Region

 

#Region " パブリックプロパティ "

  '電子メールを取得または設定します。

  Public Property EmailAddress As String

    Get

      If MyBase.IsDisposed Then

        Throw New ObjectDisposedException(Me.GetType().Name)

      End If

      Return DirectCast(MyBase.Entry.Properties.Item("mail").Value, String)

    End Get

    Set(value As String)

      If MyBase.IsDisposed Then

        Throw New ObjectDisposedException(Me.GetType().Name)

      End If

      MyBase.Entry.Properties.Item("mail").Value = value

    End Set

  End Property

'***** 長くなるので以降プロパティの Dispse チェックを省略(DisplayName と Name プロパティは元々なし)

  'アカウントが無効かどうかを取得または設定します。

  Public Property Disabled As Boolean Implements IUser.Disabled

    Get

      Return DirectCast(MyBase.Entry.NativeObject, IADsUser).AccountDisabled

    End Get

    Set(value As Boolean)

      DirectCast(MyBase.Entry.NativeObject, IADsUser).AccountDisabled = value

    End Set

  End Property

 

  '表示用の名前を取得します。

  Public ReadOnly Property DisplayName As String

    Get

      Return MyBase.Name

    End Get

  End Property

 

  '名を取得または設定します。

  Public Property FirstName As String

    Get

      Return DirectCast(MyBase.Entry.Properties.Item("givenName").Value, String)

    End Get

    Set(value As String)

      MyBase.Entry.Properties.Item("givenName").Value = value

    End Set

  End Property

 

  '表示名を取得または設定します。

  Public Property FullName As String Implements IUser.FullName

    Get

      Return DirectCast(MyBase.Entry.Properties.Item("displayName").Value, String)

    End Get

    Set(value As String)

      MyBase.Entry.Properties.Item("displayName").Value = value

    End Set

  End Property

 

  '姓を取得または設定します。

  Public Property LastName As String

    Get

      Return DirectCast(MyBase.Entry.Properties.Item("sn").Value, String)

    End Get

    Set(value As String)

      MyBase.Entry.Properties.Item("sn").Value = value

    End Set

  End Property

 

  'アカウント名を取得します。

  Public Overrides ReadOnly Property Name As String

    Get

      Return _name

    End Get

  End Property

 

  'Entry の ADSI User オブジェクトを取得します。

  Public ReadOnly Property Native As IADsUser Implements IUser.Native

    Get

      Return DirectCast(MyBase.Entry.NativeObject, IADsUser)

    End Get

  End Property

 

  '事業所を取得または設定します。

  Public Property OfficeName As String

    Get

      Return DirectCast(MyBase.Entry.Properties.Item("physicalDeliveryOfficeName").Value, String)

    End Get

    Set(value As String)

      MyBase.Entry.Properties.Item("physicalDeliveryOfficeName").Value = value

    End Set

  End Property

 

  'プライマリグループ ID を取得します。

  Public ReadOnly Property PrimaryGroupId As Integer

    Get

      Return Convert.ToInt32(MyBase.Entry.Properties.Item("primaryGroupID").Value)

    End Get

  End Property

 

  '電話番号を取得または設定します。

  Public Property TelephoneNumber As String

    Get

      Return DirectCast(MyBase.Entry.Properties.Item("telephoneNumber").Value, String)

    End Get

    Set(value As String)

      MyBase.Entry.Properties.Item("telephoneNumber").Value = value

    End Set

  End Property

#End Region

 

#Region " パブリックメソッド "

  '指定したアカウント名のユーザを検索します。このメソッドはデータバインド用です。

  <DataObjectMethod(DataObjectMethodType.Select)>

  Public Shared Function FindByName(name As String) As DomainUser

    Return DirectCast(DirectoryAccess.FindDirectoryObject(name, CategoryType.User), DomainUser)

  End Function

 

  '指定したユーザの所属するグループを取得します。このメソッドはデータバインド用です。

  <DataObjectMethod(DataObjectMethodType.Select)>

  Public Shared Function GetBelongGroups(userName As String) As ReadOnlyCollection(Of String)

    Dim user = FindByName(userName)    'ユーザを検索

    Return DirectoryAccess.GetBelongGroups(user)    'ユーザの所属するグループを取得

  End Function

 

  'ユーザの一覧を取得します。このメソッドはデータバインド用です。

  <DataObjectMethod(DataObjectMethodType.Select)>

  Public Shared Function GetUsers() As IList(Of DomainUser)

    Return DirectoryAccess.GetUsers(Of DomainUser)()    'ユーザを取得

  End Function

 

  '表示用の名前を返します。

  Public Overrides Function ToString() As String

    Return Me.DisplayName

  End Function

#End Region

End Class

 

継承元の Name プロパティは表示用の名前を取得するよう name 属性の値を返すようになってるんですが、ユーザの場合はアカウント名を返したいので、sAMAccountName 属性の値を返すようオーバーライドしてます。

表示用の名前は別途 DisplayName プロパティ(Webアプリ用)と オーバーライドした ToString メソッド(Windowsアプリ用)で取得します。

ユーザアカウントを作る時ににちゃんと氏名を指定していれば、それが表示される方が見た目に判りやすいと思います。

 

データバインド用のメソッドは Webアプリで必要になります。内部で DirectoryAccess クラスのメソッドを呼んでますが、これについては別途書きます。

投稿日時 : 2013年7月8日 23:53

コメントを追加

# ivermectin 3mg pill http://stromectolabc.com/
ivermectin 1 2022/02/08 2:46 Busjdhj

ivermectin 3mg pill http://stromectolabc.com/
ivermectin 1

# stromectol 6 mg dosage http://stromectolabc.com/
stromectol 3 mg tablet 2022/02/08 16:37 Busjdhj

stromectol 6 mg dosage http://stromectolabc.com/
stromectol 3 mg tablet

# doxycycline 50mg https://doxycyline1st.com/
doxycycline 100mg online 2022/02/26 8:22 Doxycycline

doxycycline 50mg https://doxycyline1st.com/
doxycycline 100mg online

# free single personal ads https://topdatingsites.fun/
best dating website in usa 2022/11/15 0:26 DatingTop

free single personal ads https://topdatingsites.fun/
best dating website in usa

# prednisone https://prednisone20mg.site/
prednisone 50 mg for sale 2022/11/15 17:56 Prednisone

prednisone https://prednisone20mg.site/
prednisone 50 mg for sale

# online ukraine dating https://datingsiteonline.site/
dating sjtes 2022/12/05 23:46 Tading

online ukraine dating https://datingsiteonline.site/
dating sjtes

# ï»¿cytotec pills online - https://cytotecsale.pro/# 2023/04/28 23:29 Cytotec

cytotec pills online - https://cytotecsale.pro/#

# over the counter pill identifier https://overthecounter.pro/# 2023/05/08 18:14 OtcJikoliuj

over the counter pill identifier https://overthecounter.pro/#

# canadian pharmacies online https://canadianpharm.pro/# canadian pharmacies online 2023/07/03 0:04 CanadaPharm

canadian pharmacies online https://canadianpharm.pro/# canadian pharmacies online

# clopidogrel bisulfate 75 mg https://plavix.guru/ Plavix 75 mg price 2023/10/23 21:15 Plavixxx

clopidogrel bisulfate 75 mg https://plavix.guru/ Plavix 75 mg price

# lana rhoades filmleri - https://lanarhoades.fun/ lana rhodes
2024/03/02 23:55 LanaRho

lana rhoades filmleri - https://lanarhoades.fun/ lana rhodes

# eva elfie modeli https://evaelfie.pro/ eva elfie izle 2024/03/03 8:45 EvaElfia

eva elfie modeli https://evaelfie.pro/ eva elfie izle

# eva elfie hot https://evaelfie.site/ eva elfie photo
2024/03/07 4:38 EvaElfie

eva elfie hot https://evaelfie.site/ eva elfie photo

# sweet bonanza demo https://sweetbonanza.bid/ - sweet bonanza giri&#351;
2024/03/27 22:11 Bonanzaj

sweet bonanza demo https://sweetbonanza.bid/ - sweet bonanza giri&#351;

タイトル
名前
URL
コメント