Skip to content

ssveronis/Y210-flask-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Y210-flask-app

Τίτλος εργασίας: Flask Να χρησιμοποιήσετε το framework για να αναπτύξετε μια φόρμα που επιτρέπει εγγραφές νέων χρηστών σε ιστοσελίδα. Οι χρήστες να αποθηκεύονται σε αρχείο.

Η εργασία αυτή δημιουργήθηκε στο πλαίσιο του μαθήματος Εισαγωγή στην Επιστήμη του Ηλεκτρολόγου Μηχανικού (ECE_Y210) του τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών.

Προβλήματα

  • Το μεγαλύτερο πρόβλημα της εφαρμογής είναι ότι τα html templates σχεδιάστηκαν για υπολογιστή με τον browser σε πλήρη οθόνη (1920x1080) και δεν είναι ευανάγνωστα σε άλλες συνθήκες. (π.χ. κινητό)
  • Μερικές φορές όταν ο χρήστης συνδέεται μέσω του λογαριασμού του στο Google επιστρέφεται ένα σφάλμα σύμφωνα με το οποίο το token που επέστρεψε η Google χρησιμοποιήθηκε πολύ νωρίς. Για τον λόγω αυτόν υπάρχει προγραμματιστεί μια μικρή καθυστέρηση των 6 δευτερολέπτων
  • Επίσης ο mail server που χρησιμοποιεί η έκδοση στο Azure μερικές φορές αδυνατεί να στείλει email σε διευθύνσεις @gmail.com. Αυτό όμως είναι πρόβλημα του mail server και όχι της εφαρμογής.

Live Demo

image

Εγκατάσταση

Αφού κατεβάσετε τον κώδικα και ενδεχομένως φτιάξετε και ενεργοποιήσετε ένα εικονικό περιβάλλον πρέπει να εγκαταστήσετε τις ακόλουθες βιβλιοθήκες:

Library Name Version
bcrypt 3.2.2
cachetools 5.2.0
certifi 2022.5.18.1
cffi 1.15.0
charset-normalizer 2.0.12
click 8.1.3
colorama 0.4.4
dnspython 2.2.1
email-validator 1.2.1
Flask 2.1.2
Flask-Bcrypt 1.0.1
Flask-Login 0.6.1
Flask-WTF 1.0.1
google-auth 2.7.0
google-auth-oauthlib 0.5.1
gunicorn 20.1.0
idna 3.3
itsdangerous 2.1.2
Jinja2 3.1.2
MarkupSafe 2.1.1
oauthlib 3.2.0
pathlib 1.0.1
Pillow 9.1.1
pyasn1 0.4.8
pyasn1-modules 0.2.8
pycparser 2.21
pyotp 2.6.0
python-dotenv 0.20.0
qrcode 7.3.1
requests 2.27.1
requests-oauthlib 1.3.1
rsa 4.8
six 1.16.0
urllib3 1.26.9
Werkzeug 2.1.2
WTForms 3.0.1

το οποίο μπορείτε να κάνετε με την εντολή:

pip install -r requirements.txt

Στην συνέχεια πρέπει να δώσετε τιμές στις μεταβλητές που βρίσκονται στο αρχείο .env. Δείτε Μεταβλητές Συστήματος

Είμαστε έτοιμοι!:tada: Τρέχουμε το πρόγραμμά μας app.py:

python app.py

Μεταβλητές Συστήματος

Στο αρχείο .env υπάρχουν οι ακόλουθες μεταβλητές:

Όνομα μεταβλητής Επεξήγηση Αποδεκτές Τιμές
DEBUG TRUE για να τρέξει το Flask σε debug mode. Διαφορετικά False TRUE | FALSE
PORT Η πόρτα στην οποία θα τρέξει η εφαρμογή. Απαιτείται Port Forwarding. 1 - 65535
DOMAIN Ένα domain ή διεύθυνση IP που να δείχνει στον υπολογιστεί που φιλοξενεί την εφαρμογή. Χρησιμοποιείται κατα την αποστολή των email. Ένα domain ή διεύθυνση IP που να δείχνει στον υπολογιστεί που φιλοξενεί την εφαρμογή
SECRET_KEY [Flask Docs](https://flask.palletsprojects.com/en/2.1.x/config/#SECRET_KEY) Ένα οποιοδήποτε string
WTF_CSRF_SECRET_KEY [Flask-WTF Docs](https://flask-wtf.readthedocs.io/en/1.0.x/config/) Ένα οποιοδήποτε string
OAUTHLIB_INSECURE_TRANSPORT 1 για να λειτουργήσει η δυνατότητα σύνδεσης μέσω Google σε περιπτώσεις που δεν υποστηρίζεται https. Διαφορετικά 0 0 | 1
EMAIL_FROM_HEADER From email header Name <soneone@example.com>
EMAIL_SMTP_SERVER_IP Ένα domain η διεύθυνση IP που να δείχνει στον SMTP Server Ένα domain η διεύθυνση IP που να δείχνει στον SMTP Server
EMAIL_SMTP_SERVER_PORT Η πόρτα του SMTP Server 25 | 465 | 587 | 2525
EMAIL_SMTP_SERVER_LOGIN Το usename με το οποίο πρέπει να γίνει η σύνδεση στον SMTP Server Το usename με το οποίο πρέπει να γίνει η σύνδεση στον SMTP Server
EMAIL_SMTP_SERVER_PASSWORD Ο κωδικός με τον οποίο πρέπει να γίνει η σύνδεση στον SMTP Server Ο κωδικός με τον οποίο πρέπει να γίνει η σύνδεση στον SMTP Server
GOOGLE_CLIENT_ID Το string που πήρατε από το Google Cloud Platform Το string που πήρατε από το Google Cloud Platform
GOOGLE_SECRET_FILE Η θέση που είναι αποθηκευμένο το αρχείο που κατεβάσατε από το Google Cloud Platform Η θέση που είναι αποθηκευμένο το αρχείο που κατεβάσατε από το Google Cloud Platform
GOOGLE_REDIRECT_URL Η διεύθυνση στην οποία θα επιστρέφει ο χρήστης αφού συνδεθεί μέσω Google. /signInWithGoogle/auth

Σύνδεση με Google

Για να λειτουργήσει η δυνατότητα σύνδεσης μέσω Google πρέπει να δηλωθούν στο αρχείο .env οι μεταβλητές GOOGLE_CLIENT_ID και GOOGLE_SECRET_FILE. Για να βρούμε αυτές τις τιμές:

  1. Μεταβαίνουμε στο Google Cloud Platform
  2. Επιλέγουμε το project που θέλουμε να χρησιμοποιήσουμε ή δημιουργούμε ένα νέο
  3. Επιλέγουμε Navigation menu>APIs & Services>Credentials
  4. Επιλέγουμε Create Credentials>OAuth client ID

image

  1. Ίσως σας ζητηθεί να δημιουργίσετε μία OAuth consent screen
  2. Επιλέγουμε Application type:Web application και ένα όνομα.

image

  1. Ως Authorized redirect URIs εισάγουμε https://example.com/signInWithGoogle/auth ή http://example.com/signInWithGoogle/auth αν ή εφαρμογή είναι ακόμα σε testing mode

image

  1. Επιλέγουμε Create
  2. Στο παράθυρο που εμφανίζεται υπάρχει το GOOGLE_CLIENT_ID και μπορούμε να αποθηκεύσουμε το CLIENT SECRET

Διαχειριστές

Η εφαρμογή γίνεται εύκολα κατανοητή. Αξίζει όμως να αναφέρουμε ότι υπάρχει η σελίδα /admin στην οποία έχουν πρόσβαση μόνο οι 'διαχειριστές'. Για να γίνει ένας χρήστης διαχειριστής πρέπει το κλειδί isAdmin που αντισοιχεί στον λογαριασμό του, και μπορεί να βρεθεί στο αρχείο /App/data/users.json, να είναι ορισμένο σε true

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published