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