Ejemplo n.º 1
0
 def _response_body(self, resource, request, response):
     debug = getattr(resource.top, "DEBUG", False)
     req_data = request.req_data
     top = resource.top
     HTTP_Status = top.Status
     self.errors = Errors()
     self._credentials_validation \
         ( resource, request
         , fn_password = "******"
         , debug       = debug
         )
     new_password = self.get_password \
         (request, "npassword", verify_field = "vpassword")
     account = self.account
     resource._check_account(account, self.errors)
     if self.errors:
         response.errors = self.errors
         response.account = self.account
         result            = resource.GET ()._response_body \
             (resource, request, response)
         return result
     else:
         next = req_data.get("next", "/")
         response.username = account.name
         account.change_password(new_password, suspended=False)
         top.scope.commit()
         resource._send_notification(response, account)
         raise HTTP_Status.See_Other(next)
Ejemplo n.º 2
0
 def _render_context(self, resource, request, response, **kw):
     pid = int(request.req_data.get("p", "-1"))
     account = resource._account_query(pid, response)
     return self.__super._render_context \
         ( resource, request, response
         , account  = account
         , errors   = getattr (response, "errors",   Errors ())
         , username = getattr (response, "username", None)
         , ** kw
         )
Ejemplo n.º 3
0
 def _response_body(self, resource, request, response):
     req_data = request.req_data
     top = resource.top
     self.errors = Errors()
     username = self.get_username(request)
     if username:
         self.get_account(resource, username)
         if self.account:
             self.errors ["username"].append \
                 (_T ( "Account with this Email address already "
                       "registered"
                     )
                 )
     new_password  = self.get_password \
         (request, "npassword", verify_field = "vpassword")
     if not self.errors:
         next = req_data.get("next", "/")
         host = request.host
         Auth = top.scope.Auth
         account, token = Auth.Account.create_new_account \
             (username, new_password)
         link = resource.parent.href_action(account, token, request)
         top.scope.commit()
         try:
             resource.send_email \
                 ( resource.email_template
                 , email_to      = username
                 , email_subject =
                     _T ("Email confirmation for %s") % (host, )
                 , email_from    = resource.email_from
                 , link          = link
                 , NAV           = top
                 , page          = resource
                 , host          = host
                 )
         except Exception as exc:
             self.errors[None].append(str(exc))
         else:
             response.add_notification \
                 (_T ( "A confirmation has been sent to your email "
                       "address %s."
                     )
                 % (username, )
                 )
             raise top.Status.See_Other(next)
     response.username = None
     response.errors = self.errors
     result = resource.GET ()._response_body \
         (resource, request, response)
     return result
Ejemplo n.º 4
0
 def _response_body(self, resource, request, response):
     req_data = request.req_data
     top = resource.top
     self.errors = Errors()
     username = self.get_username(request, "username")
     self.get_account \
         (resource, username, getattr (top, "DEBUG", False))
     if not self.account and not self.errors:
         self.errors [None].append \
            (_T ("Account could not be found"))
     if self.errors:
         response.errors = self.errors
         result  = resource.GET ()._response_body \
             (resource, request, response)
         return result
     else:
         Auth = top.scope.GTW.OMP.Auth
         account = self.account
         host = request.host
         next = request.referrer or "/"
         passwd, token = Auth.Account.reset_password(account)
         link = resource.parent.href_action(account, token, request)
         top.scope.commit()
         resource.send_email \
             ( resource.email_template
             , email_to      = username
             , email_subject =
                 ( _T ("Password reset for user %s on website %s")
                 % (username, host)
                 )
             , email_from    = resource.email_from
             , new_password  = passwd
             , link          = link
             , NAV           = top
             , page          = resource
             , host          = host
             )
         response.add_notification \
             ( GTW.Notification
                 (_T ( "The reset password instructions have been "
                       "sent to your email address %s."
                     )
                 % (username, )
                 )
             )
         raise top.Status.See_Other(next)
Ejemplo n.º 5
0
 def _response_body(self, resource, request, response):
     req_data = request.req_data
     if req_data.get("Reset"):
         resetter = resource.parent._get_child("request_reset_password")
         result   = resetter.POST ()._response_body \
             (resetter, request, response)
         return result
     else:
         self.errors = Errors()
         debug = getattr(resource.top, "DEBUG", False)
         username, password = self._credentials_validation \
             (resource, request, debug = debug)
         if self.errors:
             if password:
                 ### clear `username` in re-displayed form
                 response.username = None
             else:
                 ### keep `username` in re-displayed form
                 response.username = username
             response.errors = self.errors
             response.account = self.account
             result = resource.GET ()._response_body \
                 (resource, request, response)
             return result
         else:
             if self.account.password_change_required:
                 ### a password change is required -> redirect to
                 ### that page
                 next = resource.href_change_pass(self.account)
             else:
                 next = req_data.get("next", "/")
                 username = req_data["username"]
                 response.username = username
                 response.add_notification \
                     (_T ("Welcome %s.") % (username, ))
             raise resource.Status.See_Other(next)
Ejemplo n.º 6
0
 def _response_body(self, resource, request, response):
     debug = getattr(resource.top, "DEBUG", False)
     req_data = request.req_data
     top = resource.top
     HTTP_Status = top.Status
     self.errors = Errors()
     old_email, _  = self._credentials_validation \
         (resource, request, debug = debug)
     new_email = self.get_email(request)
     if not self.errors:
         account = self.account
         next = req_data.get("next", "/")
         host = request.host
         token = account.change_email_prepare(new_email)
         link      = resource.parent.href_action  \
             (account, token, request)
         top.scope.commit()
         subject   = \
             (_T ( "Confirmation for change of email "
                   "for account %s to %s for website %s"
                 )
             % (old_email, new_email, host)
             )
         try:
             resource.send_email \
                 ( resource.new_email_template
                 , NAV           = top
                 , email_from    = resource.email_from
                 , email_subject = subject
                 , email_to      = new_email
                 , host          = host
                 , link          = link
                 , page          = resource
                 )
         except Exception as exc:
             self.errors[None].append(str(exc))
         else:
             response.add_notification \
                 ( GTW.Notification
                     (_T ( "A confirmation email has been sent to "
                           "the new email address %s."
                         )
                     % (new_email, )
                     )
                 )
             try:
                 resource.send_email \
                     ( resource.old_email_template
                     , NAV           = top
                     , email_from    = resource.email_from
                     , email_subject = subject
                     , email_to      = old_email
                     , host          = host
                     , new_email     = new_email
                     , old_email     = old_email
                     , page          = resource
                     , request       = request
                     )
             except Exception as exc:
                 logging.exception("Exception during Change-Email")
             raise HTTP_Status.See_Other(next)
     response.errors = self.errors
     response.account = self.account
     result = resource.GET ()._response_body \
         (resource, request, response)
     return result