Correct tenant in session using to_dict

This commit is contained in:
Josako
2024-04-30 15:08:04 +02:00
parent 9faf5a9fc0
commit 8e069cc653
4 changed files with 23 additions and 7 deletions

View File

@@ -28,6 +28,16 @@ class Tenant(db.Model):
def __repr__(self): def __repr__(self):
return '<Tenant %r>' % self.name return '<Tenant %r>' % self.name
def to_dict(self):
return {
'id': self.id,
'name': self.name,
'website': self.website,
'license_start_date': self.license_start_date,
'license_end_date': self.license_end_date,
'allowed_monthly_interactions': self.allowed_monthly_interactions
}
class Role(db.Model, RoleMixin): class Role(db.Model, RoleMixin):
__bind_key__ = 'public' __bind_key__ = 'public'
@@ -85,4 +95,3 @@ class User(db.Model, UserMixin):
def has_roles(self, *args): def has_roles(self, *args):
return any(role.name in args for role in self.roles) return any(role.name in args for role in self.roles)

View File

@@ -43,7 +43,6 @@
{% endmacro %} {% endmacro %}
<div class="navbar navbar-expand-lg navbar-light bg-white z-index-3 py-3"> <div class="navbar navbar-expand-lg navbar-light bg-white z-index-3 py-3">
...
<div class="collapse navbar-collapse w-100 pt-3 pb-2 py-lg-0" id="navigation"> <div class="collapse navbar-collapse w-100 pt-3 pb-2 py-lg-0" id="navigation">
<ul class="navbar-nav navbar-nav-hover mx-auto"> <ul class="navbar-nav navbar-nav-hover mx-auto">
{% if current_user.is_authenticated %} {% if current_user.is_authenticated %}
@@ -51,14 +50,18 @@
{'name': 'Select Tenant', 'url': '/user/select_tenant', 'roles': ['Super User']}, {'name': 'Select Tenant', 'url': '/user/select_tenant', 'roles': ['Super User']},
{'name': 'Tenant Registration', 'url': '/user/tenant', 'roles': ['Super User']}, {'name': 'Tenant Registration', 'url': '/user/tenant', 'roles': ['Super User']},
{'name': 'User Registration', 'url': '/user/user', 'roles': ['admin', 'manager']}, {'name': 'User Registration', 'url': '/user/user', 'roles': ['admin', 'manager']},
{'name': 'User List', 'url': '/user/view_users', 'roles': ['Super User', 'Tenant Admin']} {'name': 'User List', 'url': '/user/view_users/' + session['tenant']['id']|string, 'roles': ['Super User', 'Tenant Admin']}
]) }} ]) }}
{% endif %} {% endif %}
{{ dropdown('Account', 'contacts', [ {{ dropdown('Account', 'contacts', [
{'name': 'Login', 'url': '/login'}, {'name': 'Login', 'url': '/login'},
{'name': 'Logout', 'url': '/logout'} {'name': 'Logout', 'url': '/logout'}
]) }} ]) }}
{% if current_user.is_authenticated %}
{% if 'tenant' in session %}
<li>TENANT ID: {{ session['tenant'].get('id', 'None') }}, TENANT NAME: {{ session['tenant'].get('name', 'None') }}</li>
{% endif %}
{% endif %}
</ul> </ul>
</div> </div>
...
</div> </div>

View File

@@ -5,4 +5,4 @@ from ..models.user import User, Tenant
# Definition of Trigger Handlers # Definition of Trigger Handlers
def set_tenant_session_data(sender, user, **kwargs): def set_tenant_session_data(sender, user, **kwargs):
tenant = Tenant.query.filter_by(id=user.tenant_id).first() tenant = Tenant.query.filter_by(id=user.tenant_id).first()
session['tenant'] = tenant session['tenant'] = tenant.to_dict()

View File

@@ -15,6 +15,8 @@ user_bp = Blueprint('user_bp', __name__, url_prefix='/user')
@user_bp.route('/tenant', methods=['GET', 'POST']) @user_bp.route('/tenant', methods=['GET', 'POST'])
@roles_required('Super User') @roles_required('Super User')
def tenant(): def tenant():
print("SESSION:")
print(session)
if request.method == 'POST': if request.method == 'POST':
# Handle the required attributes # Handle the required attributes
name = request.form.get('name') name = request.form.get('name')
@@ -180,7 +182,9 @@ def select_tenant():
def handle_tenant_selection(): def handle_tenant_selection():
tenant_id = request.form['tenant_id'] tenant_id = request.form['tenant_id']
the_tenant = Tenant.query.get(tenant_id) the_tenant = Tenant.query.get(tenant_id)
session['tenant'] = the_tenant session['tenant'] = the_tenant.to_dict()
print("SESSION TENANT")
print(session['tenant'])
action = request.form['action'] action = request.form['action']
if action == 'view_users': if action == 'view_users':
@@ -191,7 +195,7 @@ def handle_tenant_selection():
return redirect(url_for('select_tenant')) return redirect(url_for('select_tenant'))
@user_bp.route('/view_users/<tenant_id>') @user_bp.route('/view_users/<int:tenant_id>')
@roles_accepted('Super User', 'Tenant Admin') @roles_accepted('Super User', 'Tenant Admin')
def view_users(tenant_id): def view_users(tenant_id):
print(tenant_id) print(tenant_id)