- Added RoleRepository and UserRepository for managing roles and users. - Implemented methods for creating, retrieving, and assigning roles to users. - Introduced functions to ensure default roles and an admin user exist in the system. - Updated UnitOfWork to include user and role repositories. - Created new security module for password hashing and JWT token management. - Added tests for authentication flows, including registration, login, and password reset. - Enhanced HTML templates for user registration, login, and password management with error handling. - Added a logo image to the static assets.
61 lines
2.9 KiB
HTML
61 lines
2.9 KiB
HTML
{% set dashboard_href = request.url_for('dashboard.home') if request else '/' %}
|
|
{% set projects_href = request.url_for('projects.project_list_page') if request
|
|
else '/projects/ui' %} {% set project_create_href =
|
|
request.url_for('projects.create_project_form') if request else
|
|
'/projects/create' %} {% set login_href = request.url_for('auth.login_form') if
|
|
request else '/login' %} {% set register_href =
|
|
request.url_for('auth.register_form') if request else '/register' %} {% set
|
|
forgot_href = request.url_for('auth.password_reset_request_form') if request
|
|
else '/forgot-password' %} {% set nav_groups = [ { "label": "Workspace",
|
|
"links": [ {"href": dashboard_href, "label": "Dashboard", "match_prefix": "/"},
|
|
{"href": projects_href, "label": "Projects", "match_prefix": "/projects"},
|
|
{"href": project_create_href, "label": "New Project", "match_prefix":
|
|
"/projects/create"}, ], }, { "label": "Insights", "links": [ {"href":
|
|
"/ui/simulations", "label": "Simulations"}, {"href": "/ui/reporting", "label":
|
|
"Reporting"}, ], }, { "label": "Configuration", "links": [ { "href":
|
|
"/ui/settings", "label": "Settings", "children": [ {"href": "/theme-settings",
|
|
"label": "Themes"}, {"href": "/ui/currencies", "label": "Currency Management"},
|
|
], }, ], }, { "label": "Account", "links": [ {"href": login_href, "label":
|
|
"Login", "match_prefix": "/login"}, {"href": register_href, "label": "Register",
|
|
"match_prefix": "/register"}, {"href": forgot_href, "label": "Forgot Password",
|
|
"match_prefix": "/forgot-password"}, ], }, ] %}
|
|
|
|
<nav class="sidebar-nav" aria-label="Primary navigation">
|
|
{% set current_path = request.url.path if request else "" %} {% for group in
|
|
nav_groups %}
|
|
<div class="sidebar-section">
|
|
<div class="sidebar-section-label">{{ group.label }}</div>
|
|
<div class="sidebar-section-links">
|
|
{% for link in group.links %} {% set href = link.href %} {% set
|
|
match_prefix = link.get('match_prefix', href) %} {% if match_prefix == '/'
|
|
%} {% set is_active = current_path == '/' %} {% else %} {% set is_active =
|
|
current_path.startswith(match_prefix) %} {% endif %}
|
|
<div class="sidebar-link-block">
|
|
<a
|
|
href="{{ href }}"
|
|
class="sidebar-link{% if is_active %} is-active{% endif %}"
|
|
>
|
|
{{ link.label }}
|
|
</a>
|
|
{% if link.children %}
|
|
<div class="sidebar-sublinks">
|
|
{% for child in link.children %} {% set child_prefix =
|
|
child.get('match_prefix', child.href) %} {% if child_prefix == '/' %}
|
|
{% set child_active = current_path == '/' %} {% else %} {% set
|
|
child_active = current_path.startswith(child_prefix) %} {% endif %}
|
|
<a
|
|
href="{{ child.href }}"
|
|
class="sidebar-sublink{% if child_active %} is-active{% endif %}"
|
|
>
|
|
{{ child.label }}
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</nav>
|