## Script (Python) "change_password"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=password, confirm, domains=None, REQUEST, RESPONSE
##title=Action to change password
##

membership = context.portal_membership
failMessage=context.portal_registration.testPasswordValidity(password, confirm)
if failMessage:
  if failMessage=="Your password must contain at least 5 characters.":
     failMessage="Passordet må være på minst fem bokstaver!"
  elif failMessage=="Your password and confirmation did not match. Please try again.":
     failMessage="Bekreftelsen av det nye passordet feilet! Vennligst forsøk igjen!"
  
  context.REQUEST.set('error', failMessage)
  return context.password_form(context, context.REQUEST)
  
if not membership.isAnonymousUser():
  member= membership.getAuthenticatedMember()
  userfolder= context.portal_url.getPortalObject().acl_users
  user = member.getUser()
  REQUEST.set('name', user.getUserName() )
  REQUEST.set('roles',  user.getRoles() )
  REQUEST.set('domains', user.getDomains() )
  password = REQUEST.get('password', 'broken')
  confirm = REQUEST.get('confirm', 'nope')
  membership.setPassword(password)
else:
  #XXX: String exception?
  raise 'Bad Request', 'Du er ikke innlogget!'

return context.personalize_form(context,
                                context.REQUEST,
                                portal_status_message='Passordendringen er registrert.')
