add login option: stay_logged_in

As proposed in issue #354; it adds an attribute max_age
to mediagoblin.tools.session.Session  that is passed to
response.set_cookie;  max_age is set to 30  days if the
checkbox is selected
This commit is contained in:
Jakob Kramer 2013-05-10 00:40:13 +02:00 committed by Rodney Ewing
parent a4dcb1f46a
commit 527b7e3b57
3 changed files with 6 additions and 1 deletions

View File

@ -88,6 +88,8 @@ def login(request):
if user:
# set up login in session
if login_form.stay_logged_in.data:
request.session.max_age = 30 * 24 * 60 * 60
request.session['user_id'] = unicode(user.id)
request.session.save()

View File

@ -41,3 +41,5 @@ class LoginForm(wtforms.Form):
normalize_user_or_email_field()])
password = wtforms.PasswordField(
_('Password'))
stay_logged_in = wtforms.BooleanField(
_('Stay logged in'))

View File

@ -24,6 +24,7 @@ _log = logging.getLogger(__name__)
class Session(dict):
def __init__(self, *args, **kwargs):
self.send_new_cookie = False
self.max_age = None
dict.__init__(self, *args, **kwargs)
def save(self):
@ -65,4 +66,4 @@ class SessionManager(object):
response.delete_cookie(self.cookie_name)
else:
response.set_cookie(self.cookie_name, self.signer.dumps(session),
httponly=True)
max_age=session.max_age, httponly=True)