mirror of
https://github.com/ansible/awx.git
synced 2026-04-05 01:59:25 -02:30
Hookup UI session expiration
This commit is contained in:
@@ -88,10 +88,8 @@ class LoggedLoginView(auth_views.LoginView):
|
|||||||
ret = super(LoggedLoginView, self).post(request, *args, **kwargs)
|
ret = super(LoggedLoginView, self).post(request, *args, **kwargs)
|
||||||
current_user = getattr(request, 'user', None)
|
current_user = getattr(request, 'user', None)
|
||||||
|
|
||||||
if current_user and getattr(current_user, 'pk', None) and current_user != original_user:
|
if request.user.is_authenticated and current_user != original_user:
|
||||||
logger.info("User {} logged in.".format(current_user.username))
|
logger.info(smart_text(u"User {} logged in.".format(self.request.user.username)))
|
||||||
if request.user.is_authenticated:
|
|
||||||
logger.info(smart_text(u"User {} logged in".format(self.request.user.username)))
|
|
||||||
ret.set_cookie('userLoggedIn', 'true')
|
ret.set_cookie('userLoggedIn', 'true')
|
||||||
current_user = UserSerializer(self.request.user)
|
current_user = UserSerializer(self.request.user)
|
||||||
current_user = JSONRenderer().render(current_user.data)
|
current_user = JSONRenderer().render(current_user.data)
|
||||||
|
|||||||
@@ -119,6 +119,20 @@ class ActivityStreamMiddleware(threading.local):
|
|||||||
self.instance_ids.append(instance.id)
|
self.instance_ids.append(instance.id)
|
||||||
|
|
||||||
|
|
||||||
|
class SessionTimeoutMiddleware(object):
|
||||||
|
"""
|
||||||
|
Resets the session timeout for both the UI and the actual session for the API
|
||||||
|
to the value of SESSION_COOKIE_AGE on every request if there is a valid session.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def process_response(self, request, response):
|
||||||
|
|
||||||
|
if request.session:
|
||||||
|
request.session.set_expiry(request.session.get_expiry_age())
|
||||||
|
response['Session-Timeout'] = int(settings.SESSION_COOKIE_AGE)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
def _customize_graph():
|
def _customize_graph():
|
||||||
from awx.main.models import Instance, Schedule, UnifiedJobTemplate
|
from awx.main.models import Instance, Schedule, UnifiedJobTemplate
|
||||||
for model in [Schedule, UnifiedJobTemplate]:
|
for model in [Schedule, UnifiedJobTemplate]:
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ SESSION_COOKIE_SECURE = True
|
|||||||
|
|
||||||
# Seconds before sessions expire.
|
# Seconds before sessions expire.
|
||||||
# Note: This setting may be overridden by database settings.
|
# Note: This setting may be overridden by database settings.
|
||||||
SESSION_COOKIE_AGE = 1209600
|
SESSION_COOKIE_AGE = 1800
|
||||||
|
|
||||||
# Maximum number of per-user valid, concurrent sessions.
|
# Maximum number of per-user valid, concurrent sessions.
|
||||||
# -1 is unlimited
|
# -1 is unlimited
|
||||||
@@ -261,6 +261,7 @@ MIDDLEWARE_CLASSES = ( # NOQA
|
|||||||
'awx.sso.middleware.SocialAuthMiddleware',
|
'awx.sso.middleware.SocialAuthMiddleware',
|
||||||
'crum.CurrentRequestUserMiddleware',
|
'crum.CurrentRequestUserMiddleware',
|
||||||
'awx.main.middleware.URLModificationMiddleware',
|
'awx.main.middleware.URLModificationMiddleware',
|
||||||
|
'awx.main.middleware.SessionTimeoutMiddleware',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,9 @@
|
|||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
response: function(config) {
|
response: function(config) {
|
||||||
if(config.headers('auth-token-timeout') !== null){
|
if(config.headers('Session-Timeout') !== null){
|
||||||
$rootScope.loginConfig.promise.then(function () {
|
$rootScope.loginConfig.promise.then(function () {
|
||||||
$AnsibleConfig.session_timeout = Number(config.headers('auth-token-timeout'));
|
$AnsibleConfig.session_timeout = Number(config.headers('Session-Timeout'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
|
|||||||
Reference in New Issue
Block a user