From 734cd8e6e51ab563a3b15e2b7dfd5c86836deff0 Mon Sep 17 00:00:00 2001 From: Santiago Lamora Date: Tue, 28 Dec 2021 12:45:33 +0100 Subject: [PATCH 1/9] export SECRET_KEY required by Flask-WTF (CSRF) --- .github/workflows/flask.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/flask.yml b/.github/workflows/flask.yml index bb192c94..ccc4a798 100644 --- a/.github/workflows/flask.yml +++ b/.github/workflows/flask.yml @@ -66,6 +66,7 @@ jobs: - name: Run Tests run: | + export SECRET_KEY=`python3 -c 'import secrets; print(secrets.token_hex())'` source env/bin/activate coverage run --source='ereuse_devicehub' env/bin/pytest -m mvp --maxfail=5 tests/ coverage report --include='ereuse_devicehub/*' From 43b5a67caba17aebd54c08ec75842795761be530 Mon Sep 17 00:00:00 2001 From: Santiago Lamora Date: Tue, 28 Dec 2021 13:05:41 +0100 Subject: [PATCH 2/9] Create logout view --- .../templates/ereuse_devicehub/base_site.html | 14 ++------------ ereuse_devicehub/views.py | 9 ++++++++- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/ereuse_devicehub/templates/ereuse_devicehub/base_site.html b/ereuse_devicehub/templates/ereuse_devicehub/base_site.html index b68d5635..d1c50e43 100644 --- a/ereuse_devicehub/templates/ereuse_devicehub/base_site.html +++ b/ereuse_devicehub/templates/ereuse_devicehub/base_site.html @@ -185,7 +185,7 @@
  • - + My Profile @@ -194,16 +194,6 @@
  • -
  • - - - Account Settings - -
  • -
  • - -
  • -
  • @@ -215,7 +205,7 @@
  • - + Sign Out diff --git a/ereuse_devicehub/views.py b/ereuse_devicehub/views.py index 3c5b28d0..84397ce7 100644 --- a/ereuse_devicehub/views.py +++ b/ereuse_devicehub/views.py @@ -1,7 +1,7 @@ import flask from flask import Blueprint from flask.views import View -from flask_login import login_required, login_user +from flask_login import login_required, login_user, logout_user from ereuse_devicehub.forms import LoginForm from ereuse_devicehub.resources.user.models import User @@ -32,6 +32,12 @@ class LoginView(View): return flask.render_template('ereuse_devicehub/user_login.html', form=form) +class LogoutView(View): + def dispatch_request(self): + logout_user() + return flask.redirect(flask.url_for('core.login')) + + class UserProfileView(View): decorators = [login_required] template_name = 'ereuse_devicehub/user_profile.html' @@ -42,4 +48,5 @@ class UserProfileView(View): core.add_url_rule('/login/', view_func=LoginView.as_view('login')) +core.add_url_rule('/logout/', view_func=LogoutView.as_view('logout')) core.add_url_rule('/profile/', view_func=UserProfileView.as_view('user-profile')) From a9515dce139b8915a13874e863ecd9243f5c2c35 Mon Sep 17 00:00:00 2001 From: Santiago Lamora Date: Tue, 28 Dec 2021 13:26:56 +0100 Subject: [PATCH 3/9] Print current_user info & drop topbar unused elements --- ereuse_devicehub/resources/user/models.py | 6 + ereuse_devicehub/static/img/profile-img.jpg | Bin 4957 -> 0 bytes .../templates/ereuse_devicehub/base_site.html | 148 +----------------- .../ereuse_devicehub/user_profile.html | 12 +- ereuse_devicehub/views.py | 6 +- 5 files changed, 15 insertions(+), 157 deletions(-) delete mode 100644 ereuse_devicehub/static/img/profile-img.jpg diff --git a/ereuse_devicehub/resources/user/models.py b/ereuse_devicehub/resources/user/models.py index c9d3fef7..70f14e00 100644 --- a/ereuse_devicehub/resources/user/models.py +++ b/ereuse_devicehub/resources/user/models.py @@ -71,6 +71,12 @@ class User(UserMixin, Thing): """Alias because flask-login expects `is_active` attribute""" return self.active + @property + def get_full_name(self): + # TODO(@slamora) create first_name & last_name fields and use + # them to generate user full name + return self.email + def check_password(self, password): # take advantage of SQL Alchemy PasswordType to verify password return self.password == password diff --git a/ereuse_devicehub/static/img/profile-img.jpg b/ereuse_devicehub/static/img/profile-img.jpg deleted file mode 100644 index 16ac22904218c0ab01136463638b24715503874e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4957 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 Lw@DStzWw
  • - - - -