Skip to content

Commit 50f7d39

Browse files
authored
Merge pull request #19 from benoitblanc/fix/re-issue-jwt
Re-issue JWT token when it is expired and Flask session is still valid
2 parents 1e2a5ec + d885a19 commit 50f7d39

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/server.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
from flask_ldap3_login import LDAP3LoginManager, AuthenticationResponseStatus
1717
from flask_ldap3_login.forms import LDAPLoginForm
1818
import i18n
19-
from qwc_services_core.jwt import jwt_manager
20-
from qwc_services_core.auth import GroupNameMapper
19+
from qwc_services_core.auth import auth_manager, GroupNameMapper, optional_auth
2120
from qwc_services_core.runtime_config import RuntimeConfig
2221
from qwc_services_core.tenant_handler import (
2322
TenantHandler, TenantPrefixMiddleware, TenantSessionInterface)
@@ -32,7 +31,7 @@
3231
app.config['JWT_ACCESS_TOKEN_EXPIRES'] = int(os.environ.get(
3332
'JWT_ACCESS_TOKEN_EXPIRES', 12*3600))
3433

35-
jwt = jwt_manager(app)
34+
jwt = auth_manager(app)
3635
app.secret_key = app.config['JWT_SECRET_KEY']
3736

3837
i18n.set('load_path', [os.path.join(
@@ -214,7 +213,14 @@ def login():
214213

215214
target_url = url_path(request.args.get('url', '/'))
216215
if current_user.is_authenticated:
217-
return redirect(target_url)
216+
if current_user.groups:
217+
identity = {'username': current_user.username, 'groups': current_user.groups}
218+
else:
219+
identity = {'username': current_user.username}
220+
access_token = create_access_token(identity)
221+
resp = make_response(redirect(target_url))
222+
set_access_cookies(resp, access_token)
223+
return resp
218224
form = LDAPLoginForm(meta=wft_locales())
219225
form.logo = config.get("logo_image_url", {})
220226
form.background = config.get("background_image_url", {})
@@ -282,7 +288,7 @@ def verify_login():
282288

283289

284290
@app.route('/logout', methods=['GET', 'POST'])
285-
@jwt_required(optional=True)
291+
@optional_auth
286292
def logout():
287293
target_url = url_path(request.args.get('url', '/'))
288294
resp = make_response(redirect(target_url))

0 commit comments

Comments
 (0)