Logout when clicking on profile icon

This commit is contained in:
Peter Stockings
2023-12-21 21:23:12 +11:00
parent e124025568
commit c03c650da0
4 changed files with 23 additions and 6 deletions

8
app.py
View File

@@ -7,7 +7,7 @@ from flask_htmx import HTMX
import requests
from db import DataBase
from services import create_http_function_view_model, create_http_functions_view_model
from flask_login import LoginManager, UserMixin, current_user, login_required, login_user
from flask_login import LoginManager, UserMixin, current_user, login_required, login_user, logout_user
from werkzeug.security import check_password_hash, generate_password_hash
login_manager = LoginManager()
@@ -342,6 +342,12 @@ def signup():
return redirect(url_for('dashboard'))
@app.route("/logout")
@login_required
def logout():
logout_user()
return redirect(url_for('home'))
@login_manager.user_loader
def load_user(user_id):

2
db.py
View File

@@ -103,5 +103,5 @@ ORDER BY invocation_time DESC""", [http_function_id])
def create_new_user(self, username, password_hash):
new_user = self.execute(
'INSERT INTO users (username, password_hash) VALUES (%s, %s) RETURNING id, username, password_hash, created_at', [username, password_hash], commit=True)
'INSERT INTO users (username, password_hash) VALUES (%s, %s) RETURNING id, username, password_hash, created_at', [username, password_hash], commit=True, one=True)
return new_user

View File

@@ -73,10 +73,10 @@
</svg><span class="sr-only" data-id="32">Home</span></a>
<div class="w-full flex-1" data-id="33">
</div><button
class="inline-flex items-center justify-center text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground rounded-full border border-gray-200 w-8 h-8 dark:border-gray-800"
</div>
<a class="inline-flex items-center justify-center text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground rounded-full border border-gray-200 w-8 h-8 dark:border-gray-800 cursor-pointer"
data-id="40" type="button" id="radix-:r1u:" aria-haspopup="menu" aria-expanded="false"
data-state="closed">
data-state="closed" href="{{ url_for('logout') }}">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" class="w-6 h-6">
<path stroke-linecap="round" stroke-linejoin="round"
@@ -84,7 +84,8 @@
</svg>
<span class="sr-only" data-id="42">Toggle user menu</span></button>
<span class="sr-only" data-id="42">Toggle user menu</span>
</a>
</header>
<main class="flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-6" data-id="50" id="container">
{{ render_partial('dashboard/http_functions.html', http_functions=http_functions) }}

View File

@@ -82,6 +82,16 @@
</td>
</tr>
{% endfor %}
{% if http_functions|length == 0 %}
<div class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted" data-id="63">
<td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 font-medium flex items-center"
colspan="3">
<span class="text-lg">No functions found</span>
</td>
</div>
{% endif %}
</tbody>
</table>
</div>