// The contents of this file are subject to the Mozilla Public License Version 1.1
// (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at .
//
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
// WARRANTY OF ANY KIND, either express or implied. See the License for the specific
// language governing rights and limitations under the License.
//
// The Original Code is the Venice Web Communities System.
//
// The Initial Developer of the Original Code is Eric J. Bowersox ,
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
// Copyright (C) 2002 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
//
// Contributor(s):
importPackage(java.util);
importClass(Packages.com.silverwrist.dynamo.UserInfoNamespace);
importPackage(Packages.com.silverwrist.dynamo.iface);
importPackage(Packages.com.silverwrist.dynamo.mail);
importClass(Packages.com.silverwrist.venice.VeniceNamespaces);
importPackage(Packages.com.silverwrist.venice.content);
importPackage(Packages.com.silverwrist.venice.session);
req = bsf.lookupBean("request"); // get request
req_help = bsf.lookupBean("request_help"); // get request
uid = req_help.getParameterString("uid");
auth = req_help.getParameterString("auth");
if ((uid==null) || (auth==null))
dynamo.scriptReturn(new ErrorBox(null,"Invalid parameters."));
user = vlib.lookupUser(req,cast.toInteger(uid));
if (user==null)
dynamo.scriptReturn(new ErrorBox(null,"User account not found."));
if (!(user.authenticate(VeniceNamespaces.SESSION_CONTROL_NAMESPACE,"password.recovery","",auth.toString())))
dynamo.scriptReturn(new ErrorBox(null,"Invalid password recovery request."));
// clear the old password recovery data
user.clearAuthenticationData(user,VeniceNamespaces.SESSION_CONTROL_NAMESPACE,"password.recovery");
// generate a new password and set it for the user
newpass = vlib.randomPassword();
user.setAuthenticationData(user,UserInfoNamespace.NAMESPACE,UserInfoNamespace.AUTH_DEFAULT,"",newpass);
// E-mail the user with a new password.
mailprov = cast.queryMailMessageProvider(req);
msg = mailprov.createSystemMessage(req);
msg.addRecipient(MailMessage.RECIP_TO,user.getEMailAddress());
globals = vcast.getGlobalPropertiesStore(req);
msg.setSubject(globals.getObject(VeniceNamespaces.MAIL_MESSAGES_NAMESPACE,
"password.change.message.title").toString());
blocks = vcast.getGlobalBlocksStore(req);
msg.setText(blocks.getObject(VeniceNamespaces.MAIL_MESSAGES_NAMESPACE,"password.change.message").toString());
msg.setVariable("username",user.getName());
msg.setVariable("password",newpass);
msg.send();
// Now pass back a "password changed" page.
vlib.setLocation(req,"top.js.vs"); // lie so we can get the "Log In" link up top
view = new VelocityView("Your Password Has Been Changed","password_changed.vm");
dynamo.scriptOutput(view);