Logout when clicking on profile icon
This commit is contained in:
8
app.py
8
app.py
@@ -7,7 +7,7 @@ from flask_htmx import HTMX
|
|||||||
import requests
|
import requests
|
||||||
from db import DataBase
|
from db import DataBase
|
||||||
from services import create_http_function_view_model, create_http_functions_view_model
|
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
|
from werkzeug.security import check_password_hash, generate_password_hash
|
||||||
|
|
||||||
login_manager = LoginManager()
|
login_manager = LoginManager()
|
||||||
@@ -342,6 +342,12 @@ def signup():
|
|||||||
|
|
||||||
return redirect(url_for('dashboard'))
|
return redirect(url_for('dashboard'))
|
||||||
|
|
||||||
|
@app.route("/logout")
|
||||||
|
@login_required
|
||||||
|
def logout():
|
||||||
|
logout_user()
|
||||||
|
return redirect(url_for('home'))
|
||||||
|
|
||||||
|
|
||||||
@login_manager.user_loader
|
@login_manager.user_loader
|
||||||
def load_user(user_id):
|
def load_user(user_id):
|
||||||
|
|||||||
2
db.py
2
db.py
@@ -103,5 +103,5 @@ ORDER BY invocation_time DESC""", [http_function_id])
|
|||||||
|
|
||||||
def create_new_user(self, username, password_hash):
|
def create_new_user(self, username, password_hash):
|
||||||
new_user = self.execute(
|
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
|
return new_user
|
||||||
@@ -73,10 +73,10 @@
|
|||||||
</svg><span class="sr-only" data-id="32">Home</span></a>
|
</svg><span class="sr-only" data-id="32">Home</span></a>
|
||||||
<div class="w-full flex-1" data-id="33">
|
<div class="w-full flex-1" data-id="33">
|
||||||
|
|
||||||
</div><button
|
</div>
|
||||||
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"
|
<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-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"
|
<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">
|
stroke="currentColor" class="w-6 h-6">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
@@ -84,7 +84,8 @@
|
|||||||
</svg>
|
</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>
|
</header>
|
||||||
<main class="flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-6" data-id="50" id="container">
|
<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) }}
|
{{ render_partial('dashboard/http_functions.html', http_functions=http_functions) }}
|
||||||
|
|||||||
@@ -82,6 +82,16 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% 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 [&:has([role=checkbox])]:pr-0 font-medium flex items-center"
|
||||||
|
colspan="3">
|
||||||
|
<span class="text-lg">No functions found</span>
|
||||||
|
</td>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user