61
61
from flask_jwt_extended import JWTManager
62
62
from flask_login import LoginManager
63
63
from itsdangerous import want_bytes
64
- from markupsafe import Markup
64
+ from markupsafe import Markup , escape
65
65
from sqlalchemy import func , inspect , or_ , select
66
66
from sqlalchemy .exc import MultipleResultsFound
67
67
from sqlalchemy .orm import joinedload
@@ -539,8 +539,9 @@ def reset_user_sessions(self, user: User) -> None:
539
539
user_session_model = interface .sql_session_model
540
540
num_sessions = session .query (user_session_model ).count ()
541
541
if num_sessions > MAX_NUM_DATABASE_USER_SESSIONS :
542
+ safe_username = escape (user .username )
542
543
self ._cli_safe_flash (
543
- f"The old sessions for user { user . username } have <b>NOT</b> been deleted!<br>"
544
+ f"The old sessions for user { safe_username } have <b>NOT</b> been deleted!<br>"
544
545
f"You have a lot ({ num_sessions } ) of user sessions in the 'SESSIONS' table in "
545
546
f"your database.<br> "
546
547
"This indicates that this deployment might have an automated API calls that create "
@@ -557,9 +558,10 @@ def reset_user_sessions(self, user: User) -> None:
557
558
session .delete (s )
558
559
session .commit ()
559
560
else :
561
+ safe_username = escape (user .username )
560
562
self ._cli_safe_flash (
561
563
"Since you are using `securecookie` session backend mechanism, we cannot prevent "
562
- f"some old sessions for user { user . username } to be reused.<br> If you want to make sure "
564
+ f"some old sessions for user { safe_username } to be reused.<br> If you want to make sure "
563
565
"that the user is logged out from all sessions, you should consider using "
564
566
"`database` session backend mechanism.<br> You can also change the 'secret_key` "
565
567
"webserver configuration for all your webserver instances and restart the webserver. "
0 commit comments