[opencms-dev] Forgot Password functionality

Patricio Keilty opencms at colaborativa.net
Thu Mar 24 00:20:59 CET 2005


Thanks again Frans! Your code snippet was pretty helpfull indeed :)

Finally, I got it working using

            // update user data
            cmso.setPassword( user.getName(), newPass );

instead of

            user.setPassword( newPass );
            user.touch();
            cmso.writeUser( user );

Regards,
--

Patricio Keilty
Colaborativa.net


Frans Postma wrote:

>I think it makes sense that only an administrator can write user records and thus change their passwords :-) So yes, in order for
>that to work on your online site you would need to login first (check out the loginElement from templateone)
>
>As for getting user by email, a little bit of copying from backoffice.java shows us:
>
>      List cmsUsers = cms.getUsers();
>        for (int i = 0; i < cmsUsers.size(); i++) {
>            String currentUserName = ((CmsUser)cmsUsers.get(i)).getName();
>            CmsUUID currentUserId = ((CmsUser)cmsUsers.get(i)).getId();
>
>            String email = ((CmsUser)cmsUsers.get(i)).getEmail();
>		if (email.equals(whatYouWantHere)) {
>			return (CmsUser)cmsUsers.get(i);
>		}
>        }  
>
>Should give you a rough idea to work with. Esp. the cms.getUsers is interesting to get the list to search.
>
>Frans
>
>  
>
>>-----Original Message-----
>>From: opencms-dev-bounces at opencms.org 
>>[mailto:opencms-dev-bounces at opencms.org] On Behalf Of Patricio Keilty
>>Sent: woensdag 23 maart 2005 17:26
>>To: The OpenCms mailing list
>>Subject: Re: [opencms-dev] Forgot Password functionality
>>
>>Thanks for your reply Frans.
>>
>>It worked when previewing from workplace, but when accessing the site 
>>online, i get
>>
>>org.opencms.security.CmsSecurityException: 
>>[org.opencms.db.CmsSecurityManager] writeUser() customera [Code 300 - 
>>Administrator priviledges are required to perform this operation]
>>
>>As suggested in related thread i should login with admin privileges, 
>>make changes and then invalidate session, is this correct?
>>
>>Any hint on how to retrieve a CmsUser based on email?
>>
>>Regards,
>>Patricio
>>
>>Patricio Keilty
>>Colaborativa.net
>>
>>
>>
>>Frans Postma wrote:
>>
>>    
>>
>>>I think you need to add something like this as last line:
>>>
>>>
>>>   cmso.writeUser(user);
>>>
>>>== javadoc:
>>>
>>>writeUser
>>>
>>>public void writeUser(CmsUser user)
>>>              throws CmsException
>>>Updates the user information. 
>>>
>>>The user id has to be a valid OpenCms user id.
>>>The user with the given id will be completely overriden by 
>>>      
>>>
>>the given data.
>>    
>>
>>>Parameters:
>>>user - the user to be written 
>>>Throws: 
>>>CmsException - if operation was not successful
>>>==
>>>
>>>Frans
>>>
>>> 
>>>
>>>      
>>>
>>>>-----Original Message-----
>>>>From: opencms-dev-bounces at opencms.org 
>>>>[mailto:opencms-dev-bounces at opencms.org] On Behalf Of 
>>>>        
>>>>
>>Patricio Keilty
>>    
>>
>>>>Sent: woensdag 23 maart 2005 0:40
>>>>To: The OpenCms mailing list
>>>>Subject: [opencms-dev] Forgot Password functionality
>>>>
>>>>Hi,
>>>>i need to provide Forgot Password functionality for our 
>>>>extranet, so in 
>>>>case a customer has forgotten its username or pass, can enter 
>>>>his email 
>>>>and get its user & new pass emailed. So, user data needs to 
>>>>be retrieved 
>>>>by email, generate a random password & update user data; then 
>>>>user/pass 
>>>>will be mailed back to the customer.
>>>>Have found a similar thread but with different requirements in 
>>>>http://mail.opencms.org/pipermail/opencms-dev/2004q4/014262.html. 
>>>><http://mail.opencms.org/pipermail/opencms-dev/2004q4/014262.html>
>>>>I plan to employ a jsp like the following:
>>>>
>>>><%
>>>>   CmsJspActionElement cms = new CmsJspActionElement( pageContext, 
>>>>request, response );
>>>>   CmsObject cmso = cms.getCmsObject();
>>>>
>>>>   String returnEmail = request.getParameter( "email" );
>>>>   String userName = request.getParameter( "username" );
>>>>   String redirect = request.getParameter( "redirect" );
>>>>
>>>>   try {
>>>>
>>>>       // retrieve user by email?
>>>>       CmsUser user = cmso.readUser( userName );
>>>>       String userEmail = user.getEmail();
>>>>       if( userEmail != null && !userEmail.equals(  returnEmail )){
>>>>            // email does not match
>>>>       } else {
>>>>           // create new random password
>>>>           String newPass = "aabbcc";
>>>>
>>>>           user.setPassword( newPass );
>>>>           user.touch();
>>>>       }
>>>>   } catch( CmsException e ){
>>>>       // user not found
>>>>   }
>>>>
>>>>   response.sendRedirect( redirect );
>>>>%>
>>>>
>>>>Is it possible to retrieve user data by email?
>>>>Have tried to change user password using 
>>>>CmsUser.setPassword(), but it 
>>>>did not update user pass.
>>>>
>>>>Could someone please provide sample code or any hints to 
>>>>achieve these?
>>>>
>>>>Thanks in advance,
>>>>Patricio
>>>>
>>>>-- 
>>>>Patricio Keilty
>>>>Colaborativa.net
>>>>
>>>>
>>>>
>>>>_______________________________________________
>>>>This mail is send to you from the opencms-dev mailing list
>>>>To change your list options, or to unsubscribe from the list, 
>>>>please visit
>>>>http://mail.opencms.org/mailman/listinfo/opencms-dev
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>> 
>>>
>>>      
>>>
>>_______________________________________________
>>This mail is send to you from the opencms-dev mailing list
>>To change your list options, or to unsubscribe from the list, 
>>please visit
>>http://mail.opencms.org/mailman/listinfo/opencms-dev
>>
>>    
>>
>
>
>
>_______________________________________________
>This mail is send to you from the opencms-dev mailing list
>To change your list options, or to unsubscribe from the list, please visit
>http://mail.opencms.org/mailman/listinfo/opencms-dev
>
>  
>



More information about the opencms-dev mailing list