[auth] Use a second authtkt policy for 'rememberme'
The former solution was buggy because the expire time of the auth cookie, if
set through 'remember', was lost on the first cookie reissuing.
The new approach, make possible thanks to multiauth, use two different cookies.
One for session bounded authentication (no 'rememberme'), and one for long
lasting authentication (w 'rememberme').
The choice between the two of them is done by adding a 'persistent' argument
to the top-level 'security.remember' call. Passing this argument will inhibate
a policy or the other.
The two policies are (a little) configurable through the
'cubicweb.auth.authtkt.[session|persistent].*' variables.
Related to #4985962
from pyramid_cubicweb.tests import PyramidCWTest
from pyramid_cubicweb import tools
class ToolsTest(PyramidCWTest):
anonymous_allowed = True
def test_clone_user(self):
with self.admin_access.repo_cnx() as cnx:
user = cnx.find('CWUser', login='anon').one()
user.login # fill the cache
clone = tools.clone_user(self.repo, user)
self.assertEqual(clone.eid, user.eid)
self.assertEqual(clone.login, user.login)
self.assertEqual(clone.cw_rset.rows, user.cw_rset.rows)
self.assertEqual(clone.cw_rset.rql, user.cw_rset.rql)
def test_cnx_attach_entity(self):
with self.admin_access.repo_cnx() as cnx:
user = cnx.find('CWUser', login='anon').one()
with self.admin_access.repo_cnx() as cnx:
tools.cnx_attach_entity(cnx, user)
self.assertEqual(user.login, 'anon')