Function ChangePassword(doc As NotesDocument) As Boolean

On Error Goto ErrHandler

Dim sess As New NotesSession

Dim vwNAB As NotesView

Dim docNAB As NotesDocument

Dim temp As Variant

Dim ErrMsg As String

Forall dbNAB In sess.AddressBooks

Call dbNAB.Open("", "")

If dbNAB.IsOpen Then

Set vwNAB = dbNAB.GetView("($Users)")

If Not vwNAB Is Nothing Then

Set docNAB = vwNAB.GetDocumentByKey(doc.UserName(0), True)

If Not docNAB Is Nothing Then Exit Forall

End If

End If

End Forall

If docNAB Is Nothing Then

ErrMsg = "Cannot locate your person document."

Goto ExitPoint

End If

temp = Evaluate({@VerifyPassword("} + doc.OldPassword(0) + {"; "} + docNAB.HTTPPassword(0) + {")})

If temp(0) <> 1 Then

ErrMsg = "Your old password is incorrect."

Goto ExitPoint

End If

If docNAB.~$SecurePassword(0) = "1" Then

temp = Evaluate({@HashPassword(NewPassword)}, doc)

Else

temp = Evaluate({@Password(NewPassword)}, doc)

End If

docNAB.HTTPPassword = temp(0)

If Not docNAB.Save(False, False) Then

ErrMsg = "Error saving the new password."

Goto ExitPoint

End If

Call sess.SendConsoleCommand(db.Server, "show nlcache reset")

ExitPoint:

Print "Content-Type: text/html; charset=utf-8"

Print "<Script>"

If ErrMsg = "" Then

Print "alert('Password changed successfully.')"

Print "window.close()"

Else

Print "alert('" + ErrMsg + "')"

Print "window.location.replace('/" + Replace(doc.ParentDatabase.FilePath, "\", "/") + "/ChangePassword?OpenForm')"

End If

Print "</Script>"

Exit Function

ErrHandler:

If Err = 4060 Then Resume Next

Msgbox "Line " & Cstr(Erl) & " - " & Error$ & " (" & Cstr(Err) & ")"

End Function

posted on 2011-10-17 11:09  Black Bean  阅读(706)  评论(0编辑  收藏  举报