From 9efbeb7b4c89399fc93a4918c1ee00088fb1c055 Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Wed, 30 Apr 2025 00:48:20 +0200 Subject: [PATCH] Fix in sessions for admin2 --- paramecio/libraries/sessionplugin.py | 9 +++++++- paramecio/modules/admin2/__init__.py | 3 ++- paramecio/modules/admin2/app.py | 22 +++++++++---------- .../modules/admin2/libraries/loginplugin.py | 2 +- pyproject.toml | 2 +- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/paramecio/libraries/sessionplugin.py b/paramecio/libraries/sessionplugin.py index ee5479c..b9788f2 100644 --- a/paramecio/libraries/sessionplugin.py +++ b/paramecio/libraries/sessionplugin.py @@ -124,6 +124,7 @@ class SessionPlugin(object): def __init__(self, keyword='session'): self.keyword=keyword + self.session=None def setup(self, app): @@ -149,6 +150,10 @@ class SessionPlugin(object): if keyword not in args: return callback """ + if keyword in args: + #print(args[keyword]) + self.session=True + def wrapper(*args, **kwargs): @@ -170,7 +175,9 @@ class SessionPlugin(object): except: session=Session() - if 'session' in kwargs: + #if 'session' in kwargs: + #print(kwargs) + if self.session: kwargs['session']=session #For compatibility with old sessions server-side style. diff --git a/paramecio/modules/admin2/__init__.py b/paramecio/modules/admin2/__init__.py index f693521..9f3f47f 100644 --- a/paramecio/modules/admin2/__init__.py +++ b/paramecio/modules/admin2/__init__.py @@ -3,5 +3,6 @@ from paramecio.modules.admin2.libraries.loginplugin import check_login from paramecio.libraries.sessionplugin import SessionPlugin admin_app=Bottle() -admin_app.install(SessionPlugin()) +splugin=SessionPlugin() +admin_app.install(splugin) admin_app.install(check_login) diff --git a/paramecio/modules/admin2/app.py b/paramecio/modules/admin2/app.py index 80f230e..52583c4 100644 --- a/paramecio/modules/admin2/app.py +++ b/paramecio/modules/admin2/app.py @@ -13,7 +13,7 @@ from paramecio.wsgiapp import app #from paramecio.modules.admin2 import admin_app from bottle import request, redirect, Bottle, response from paramecio.modules.admin2.libraries.loginplugin import check_login -from paramecio.libraries.sessionplugin import SessionPlugin +from paramecio.libraries.sessionplugin import SessionPlugin, Session from paramecio.libraries.httputils import GetPostFiles from paramecio.libraries.db.formsutils import check_form, csrf_token from paramecio.libraries.db.coreforms import PasswordForm @@ -60,7 +60,7 @@ if hasattr(config, 'admin_folder'): admin_folder=config.admin_folder @admin_app.get('/home', name="admin_app.home_admin") -def home_admin(session={}): +def home_admin(session=Session()): #s=get_session() @@ -75,7 +75,7 @@ def redirect_home(): redirect(app.get_url('admin_app.home_admin')) @admin_app.get('/login', name="admin_app.login_admin", skip=[check_login]) -def login_admin(session={}): +def login_admin(session=Session()): db=WebModel.connection() @@ -116,7 +116,7 @@ def login_admin(session={}): return t.load_template('login.phtml', title=_('Login')) @admin_app.get('/signup', skip=[check_login], name='admin_app.signup_admin') -def signup_admin(session={}): +def signup_admin(session=Session()): db=WebModel.connection() @@ -133,8 +133,8 @@ def signup_admin(session={}): return t.load_template('signup.phtml', title=_('Signup')) @admin_app.post('/login', skip=[check_login], name='admin_app.check_login_admin') -def check_login_admin(session={}): - +def check_login_admin(session=Session()): + db=WebModel.connection() #i18n=I18n('admin2') @@ -229,7 +229,7 @@ def check_login_admin(session={}): return {'error': error, 'message': message, 'no_login': no_login} @admin_app.post('/signup', skip=[check_login], name='admin_app.signup_insert_admin') -def signup_insert_admin(session={}): +def signup_insert_admin(session=Session()): #i18n=I18n('admin2') @@ -277,7 +277,7 @@ def signup_insert_admin(session={}): return {'error': error, 'message': message} @admin_app.get('/logout', name="admin_app.logout_admin", skip=[check_login]) -def logout_admin(session={}): +def logout_admin(session=Session()): if login_admin in session: del session['login_admin'] @@ -301,7 +301,7 @@ def change_lang(): return {'error': error, 'message': message} @admin_app.get('/change_theme', name="admin_app.change_theme") -def change_theme(session={}): +def change_theme(session=Session()): try: theme=int(request.query.get('theme', 0)) @@ -323,14 +323,14 @@ def change_theme(session={}): return {'error': error, 'message': ''} @admin_app.get('/need_auth', skip=[check_login], name='admin_app.need_auth') -def need_auth(session={}): +def need_auth(session=Session()): #i18n=I18n('admin2') return t.load_template('need_auth.phtml', title=_('Auth check')) @admin_app.post('/auth_check', skip=[check_login], name='admin_app.auth_check') -def auth_check(session={}): +def auth_check(session=Session()): error=1 diff --git a/paramecio/modules/admin2/libraries/loginplugin.py b/paramecio/modules/admin2/libraries/loginplugin.py index 0eec22c..79e0376 100644 --- a/paramecio/modules/admin2/libraries/loginplugin.py +++ b/paramecio/modules/admin2/libraries/loginplugin.py @@ -7,7 +7,7 @@ def check_login(callback): def wrapper(*args, **kwargs): if 'session' in request.environ: - + if request.environ['session'].get('login_admin', False) and not request.environ['session'].get('verify_auth', False): #print(request.environ.get('session')) diff --git a/pyproject.toml b/pyproject.toml index adff78e..5541cc2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "paramecio" authors = [{name = "Antonio de la Rosa", email = "antonio.delarosa@salirdelhoyo.com"}] readme = "README.md" version = "1.0.36" -description = "A simple framework using flask and mako" +description = "A simple framework using bottle and mako" # dynamic = ["version", "description"] classifiers=['Development Status :: 4 - Beta',