LOTUSSCRIPT /COM/OLE のクラス


例:HashPassword メソッド
次のフォームイベントは、文書編集のためのパスワード保護を提供します。ユーザーは、[PasswordNew] および [PasswordVerify] フィールドに文書のパスワードを入力して、指定します。[PasswordVerify] の [Exiting] イベントは、プレーンなテキストであるパスワードをハッシュし、[PasswordHashed] フィールドに入れます。以降、編集モードの文書の入力を行うときは、ユーザーはフォーム上で最初のフィールドとなる [PasswordChallange] にパスワードを入力する必要があります。[PasswordChallange] の [Exiting] イベントは、PasswordHashed に対して PasswordChallange を検証します。

REM Global declarations
Dim session As NotesSession
Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument
%REM
Fields on this form dealing with passwords:
 PasswordHashed - Text - hidden
 PasswordChallange  - Password - first field on form
 PasswordNew - Password
 PasswordVerify - Password
%END REM

Sub Postopen(Source As Notesuidocument)
 REM Set globals
 Set session = New NotesSession
 Set ws = New NotesUIWorkspace
 Set uidoc = ws.CurrentDocument
 REM Skip PasswordChallange field if new doc or no password
 If Source.IsNewDoc Or _
 Source.FieldGetText("PasswordHashed") = "" Then
   Call Source.GotoField("Subject")
 End If
End Sub

Sub Querysave(Source As Notesuidocument, Continue As Variant)
 REM If user is in PasswordVerify, force the exit event
 If Source.CurrentField = "PasswordVerify" Then
   Call Source.GotoPrevField
 End If
 REM Remove plain-text passwords!!!
 Call Source.FieldSetText("PasswordChallange", "")
 Call Source.FieldSetText("PasswordNew", "")
 Call Source.FieldSetText("PasswordVerify", "")
 Continue = True
End Sub

REM Exiting event for PasswordChallange field
Sub Exiting(Source As Field)
 pw$ = uidoc.FieldGetText("PasswordChallange")
 pwhashed$ = uidoc.FieldGetText("PasswordHashed")
 REM Do not challange if new doc
 If uidoc.IsNewDoc Then Exit Sub
 REM Do not challange if no password
 If pwhashed$ = "" Then Exit Sub
 REM Verify user password against hashed password
 If Not session.VerifyPassword(pw$, pwhashed$) Then
   Messagebox "Password challange failed",, "Bad password"
   Call uidoc.FieldSetText("PasswordChallange", "")
   Call uidoc.GotoField("PasswordChallange")
 End If
End Sub

REM Exiting event for PasswordVerify field
Sub Exiting(Source As Field)
 pwnew$ = uidoc.FieldGetText("PasswordNew")
 pwverify$ = uidoc.FieldGetText("PasswordVerify")
 REM Remove password if new password is blank
 If pwnew$ = "" Then
   Call uidoc.FieldSetText("PasswordHashed", "")
   Exit Sub
 End If
 REM Verify new password and hash
 If pwnew$ = pwverify$ Then
   Call uidoc.FieldSetText("PasswordHashed", _
   session.HashPassword(pwnew$))
 Else
   Messagebox "Verification does not match",, "Bad password"
   Call uidoc.FieldSetText("PasswordNew", "")
   Call uidoc.FieldSetText("PasswordVerify", "")
   Call uidoc.GotoField("PasswordNew")
 End If
End Sub

関連項目