Add password change functionality and profile image upload

- Add profile_image field to Profile model with default value
- Update profile edit route to handle profile image file uploads
- Add password change route with validation in auth module
- Create change password template with form
- Update profile template to include image upload with preview
- Add password change link to admin sidebar
- Update homepage to use dynamic profile image from database
This commit is contained in:
Claude
2025-11-13 15:58:51 +00:00
parent 425e66a473
commit 6845308a34
8 changed files with 143 additions and 5 deletions

View File

@@ -100,6 +100,9 @@
<i class="fas fa-share-alt me-2"></i>Link Social
</a>
<hr class="border-white my-3 mx-3">
<a href="{{ url_for('auth.change_password') }}" class="{% if request.endpoint == 'auth.change_password' %}active{% endif %}">
<i class="fas fa-key me-2"></i>Cambia Password
</a>
<a href="{{ url_for('route_home.home') }}" target="_blank">
<i class="fas fa-external-link-alt me-2"></i>Visualizza Sito
</a>

View File

@@ -6,7 +6,7 @@
{% block content %}
<div class="card">
<div class="card-body">
<form method="POST" action="{{ url_for('admin.profile_edit') }}">
<form method="POST" action="{{ url_for('admin.profile_edit') }}" enctype="multipart/form-data">
<div class="mb-3">
<label for="title" class="form-label">Titolo</label>
<input type="text" class="form-control" id="title" name="title"
@@ -40,6 +40,29 @@
value="{{ profile.cv_url if profile else '' }}">
</div>
<div class="mb-3">
<label class="form-label">Immagine di Profilo</label>
<div class="row">
<div class="col-md-6">
<label for="profile_image_file" class="form-label text-muted small">Upload Immagine</label>
<input type="file" class="form-control" id="profile_image_file" name="profile_image_file" accept="image/*">
<small class="text-muted">Formati supportati: png, jpg, jpeg, gif, webp (max 16 MB)</small>
</div>
<div class="col-md-6">
<label for="profile_image" class="form-label text-muted small">Oppure inserisci URL manualmente</label>
<input type="text" class="form-control" id="profile_image" name="profile_image"
value="{{ profile.profile_image if profile else '' }}" placeholder="img/personal.webp">
<small class="text-muted">Percorso relativo alla cartella static/</small>
</div>
</div>
{% if profile and profile.profile_image %}
<div class="mt-2">
<small class="text-muted">Immagine attuale:</small><br>
<img src="{{ url_for('static', filename=profile.profile_image) }}" alt="Profile" class="img-thumbnail rounded-circle" style="max-width: 200px; max-height: 200px;">
</div>
{% endif %}
</div>
<div class="d-flex gap-2">
<button type="submit" class="btn btn-gradient">
<i class="fas fa-save me-2"></i>Salva Modifiche