Enable permanent sessions

Fixes #1955
This commit is contained in:
Joseph Schorr 2016-10-10 13:00:59 -04:00
parent 0954240ccb
commit 3a473cad2a
5 changed files with 52 additions and 5 deletions

View file

@ -562,7 +562,7 @@ class Signin(ApiResource):
'invite_code': {
'type': 'string',
'description': 'The optional invite code'
}
},
},
},
}
@ -579,7 +579,6 @@ class Signin(ApiResource):
username = signin_data['username']
password = signin_data['password']
invite_code = signin_data.get('invite_code', '')
return conduct_signin(username, password, invite_code=invite_code)

View file

@ -23,6 +23,7 @@ from config import frontend_visible_config
from external_libraries import get_external_javascript, get_external_css
from util.names import parse_namespace_repository
from util.secscan import PRIORITY_LEVELS
from util.timedeltastring import convert_to_timedelta
logger = logging.getLogger(__name__)
@ -108,16 +109,20 @@ def param_required(param_name, allow_body=False):
return wrapper
def common_login(db_user):
def common_login(db_user, permanent_session=True):
if login_user(LoginWrappedDBUser(db_user.uuid, db_user)):
logger.debug('Successfully signed in as: %s (%s)' % (db_user.username, db_user.uuid))
new_identity = QuayDeferredPermissionUser.for_user(db_user)
identity_changed.send(app, identity=new_identity)
session['login_time'] = datetime.datetime.now()
if permanent_session and features.PERMANENT_SESSIONS:
session_timeout_str = app.config.get('SESSION_TIMEOUT', '31d')
session.permanent = True
session.permanent_session_lifetime = convert_to_timedelta(session_timeout_str)
# Inform our user analytics that we have a new "lead"
user_analytics.create_lead(db_user.email, db_user.username)
return True
else:
logger.debug('User could not be logged in, inactive?.')

View file

@ -393,7 +393,6 @@ def confirm_email():
user_analytics.change_email(old_email, new_email)
common_login(user)
return redirect(url_for('web.user', tab='email') if new_email else url_for('web.index'))