HUMCOM Account Service

概要

ユーザーのアカウント情報を取得するライブラリ。

前準備

このライブラリを使うためにDomino Directory(names.nsf)にちょっと仕掛けが必要になる。

Domino Directoryへのビューの追加

names.nsfに以下のビューを追加しておく。

UserNameTo ビュー
  • 1列目に[FullName]フィールドを配置
  • ソートは昇順にしておき、「複数値を別エントリで表示」にチェックを入れておく
  • こうしておけばユーザー名で検索すれば、ユーザー文書を特定できる
MailAddTo ビュー
  • 1列目に[InternetAddress]フィールドを配置
  • ソートは昇順にしておき、「複数値を別エントリで表示」にチェックを入れておく
  • こうしておけばメールアドレスで検索すれば、ユーザー文書を特定できる
KanjinameTo ビュー
  • 1列目に[Comment]フィールドを配置
  • ソートは昇順にしておき、「複数値を別エントリで表示」にチェックを入れておく
  • こうしておけば漢字名で検索すれば、ユーザー文書を特定できる
  • ユーザー文書の[Comment]フィールドに漢字名を設定している前提
DepartmentTo ビュー
  • 1列目に[Department]フィールドを配置
  • ソートは昇順にしておき、「複数値を別エントリで表示」にチェックを入れておく
  • こうしておけば部署名で検索すれば、その部署に所属するユーザーの一覧が手に入る
  • ユーザー文書の[Department]フィールドに部署名を設定している前提

会社名も扱いたいなら、まぁそれなりのビューを用意すればいいだろう。CompanyNameToとか。

アカウント登録時の前提条件

先ほどのビューを使ってユーザー文書を特定できるように、ユーザーを登録しておく。[Comment]フィールドには漢字名を、[Department]フィールド に部署名を、[CompanyName]フィールドに会社名をいれておく。

以下はアカウントを登録するRubyスクリプト。メールアドレスをアカウント名に使うのならこんな感じでアカウント登録ができる。

  #!ruby -Ks
  require 'notesgrip'
  
  ns = Notesgrip::NotesSession.new
  db = ns.database("technotes", "names.nsf")
  DATA.each {|oneline|
    oneline.chomp!
    kanjiname,mailadd,groupname = oneline.split(/\t/)
    accountname = mailadd.gsub(/@/, '.')
    password = "test4470test"
    doc = db.createDocument("Person")
    doc['lastName'].text = accountname
    doc['InternetAddress'].text = mailadd
    doc['FullName'].values = ["CN=#{accountname}/O=tech", accountname]
    doc['Type'].text = "Person"
    doc['RoamingUser'].text = "0"
    doc['HTTPPassword'].text = ns.hashPassword(password)
    doc['Comment'].text = kanjiname
    doc['Department'].text = groupname
    puts "#{accountname}を追加"
    #doc.save
  }
  __END__
  相原 太朗	aihara_tarou@tech-notes.dyndns.org	管理部
  赤木 知世	akagi_chise@tech-notes.dyndns.org	第1開発部
  秋山 幸子	akiyama_sachiko@tech-notes.dyndns.org	第2開発部
  

ライブラリで提供しているパブリックメソッド

命名規則

このライブラリでは以下のような命名規則を採用している。

  • "un" は "CN=Administrator/O=tech"形式のユーザー名をさす。@UserName()で得られるユーザー名
  • "kanji"は漢字名。このライブラリでは姓と名を特に区別してないので、姓と名の区切りのスペースを全角にするか半角にするかはどちらでもいい
  • "group"は部署名。"company"は会社名。
  • "madd"はメールアドレス
  • 変換系のメソッドは"un2kanji"のように記載。この場合、ユーザー名→漢字名への変換の意味

メソッド一覧

$hcacc.un2kanji(username)

@userName()で得られる"CN=Administrator/O=tech"形式のユーザー名から漢字名を得る。

登録されてないときは、nullを返す。

$hcacc.un2group(username)

ユーザー名から所属名を得る。

$hcacc.un2company(username)

ユーザー名から会社名を得る。

$hcacc.un2madd(username)

ユーザー名からメールアドレスを得る。1人のユーザーが複数のメールアドレスを持っていることは想定してない。

$hcacc.kanji2un(kanjiname)

漢字名からユーザー名を得る。漢字名は完全一致する必要があるので、区切り文字のスペースの全角/半角の区別は行う。 また同姓同名の漢字名が重複している場合もNG。無理やりミドル漢字名をつけるなどして区別する。

一致するものがなければnullを返す。

この後に続く漢字名からの変換メソッドはすべて同じ制限を持つ。

$hcacc.kanji2madd(kanjiname)

漢字名からメールアドレスを得る。

$hcacc.kanji2roup(kanjiname)

漢字名から所属を得る。

$hcacc.kanji2company(kanjiname)

漢字名から会社名を得る。

$hcacc.madd2un(mailaddress)

メールアドレスからユーザー名を得る。@DbLookup()を使って検索しているので、大文字/小文字の区別はしない。

一致するものがなければnullを返す。

$hcacc.madd2kanji(mailaddress)

メールアドレスから漢字名を得る。

$hcacc.madd2roup(mailaddress)

メールアドレスから所属を得る。

$hcacc.madd2company(mailaddress)

メールアドレスから会社名を得る。

$hcacc.getUnList(groupname)

その部署に所属するユーザー名の配列を得る。部署名が存在しない場合でも、その部署に属する人がいない場合でも[]を返す。

groupnameを指定しない場合は、システムに登録されているすべてのユーザー名の配列を得る。

$hcacc.getAllUnList()

システムに登録されているすべてのユーザー名の配列を得る。

$hcacc.getKanjiList(groupname)

その部署に所属するユーザーの漢字名の配列を返す。

groupnameを指定しない場合は、システムに登録されているすべてのユーザーの漢字名の配列を返す。

$hcacc.getAllKanjiList()

システムに登録されているすべてのユーザーの漢字名の配列を返す。

$hcacc.getGroupList(companyname)

指定した会社の部署の一覧を返す。

companynameを指定しない場合は、すべての部署の名前を返すが、複数の会社が登録されている場合はあまり意味がないかも。

$hcacc.getAllCompanyList()

システムに登録されているすべての会社名の一覧を返す。

$hcacc.analizeNameText(name_text)

手入力された名前文字列からユーザー名の特定を試みる。漢字名、メールアドレス、ユーザー名が利用可能。 特定できたらユーザー名を返す。特定できない場合はnullを返す。