web/views/authentication.py
changeset 3451 6b46d73823f5
parent 2887 1282dc6525c5
child 3460 e4843535db25
equal deleted inserted replaced
3448:495862266785 3451:6b46d73823f5
    71             login, password = _login, _password
    71             login, password = _login, _password
    72         else:
    72         else:
    73             login, password = req.get_authorization()
    73             login, password = req.get_authorization()
    74         if not login:
    74         if not login:
    75             # No session and no login -> try anonymous
    75             # No session and no login -> try anonymous
    76             login, password = self.vreg.config.anonymous_user()
    76             login, password = self._cw.vreg.config.anonymous_user()
    77             if not login: # anonymous not authorized
    77             if not login: # anonymous not authorized
    78                 raise ExplicitLogin()
    78                 raise ExplicitLogin()
    79         # remove possibly cached cursor coming from closed connection
    79         # remove possibly cached cursor coming from closed connection
    80         clear_cache(req, 'cursor')
    80         clear_cache(req, 'cursor')
    81         cnxprops = ConnectionProperties(self.vreg.config.repo_method,
    81         cnxprops = ConnectionProperties(self._cw.vreg.config.repo_method,
    82                                         close=False, log=self.log_queries)
    82                                         close=False, log=self.log_queries)
    83         try:
    83         try:
    84             cnx = repo_connect(self.repo, login, password, cnxprops=cnxprops)
    84             cnx = repo_connect(self.repo, login, password, cnxprops=cnxprops)
    85         except AuthenticationError:
    85         except AuthenticationError:
    86             req.set_message(req._('authentication failure'))
    86             req.set_message(req._('authentication failure'))
    87             # restore an anonymous connection if possible
    87             # restore an anonymous connection if possible
    88             anonlogin, anonpassword = self.vreg.config.anonymous_user()
    88             anonlogin, anonpassword = self._cw.vreg.config.anonymous_user()
    89             if anonlogin and anonlogin != login:
    89             if anonlogin and anonlogin != login:
    90                 cnx = repo_connect(self.repo, anonlogin, anonpassword,
    90                 cnx = repo_connect(self.repo, anonlogin, anonpassword,
    91                                    cnxprops=cnxprops)
    91                                    cnxprops=cnxprops)
    92                 self._init_cnx(cnx, anonlogin, anonpassword)
    92                 self._init_cnx(cnx, anonlogin, anonpassword)
    93             else:
    93             else:
    98         req.set_connection(cnx)
    98         req.set_connection(cnx)
    99         return cnx
    99         return cnx
   100 
   100 
   101     def _init_cnx(self, cnx, login, password):
   101     def _init_cnx(self, cnx, login, password):
   102         # decorate connection
   102         # decorate connection
   103         if login == self.vreg.config.anonymous_user()[0]:
   103         if login == self._cw.vreg.config.anonymous_user()[0]:
   104             cnx.anonymous_connection = True
   104             cnx.anonymous_connection = True
   105         cnx.vreg = self.vreg
   105         cnx.vreg = self._cw.vreg
   106         cnx.login = login
   106         cnx.login = login
   107         cnx.password = password
   107         cnx.password = password
   108 
   108