Η εργασία έγινε στο πλαίσιο του μαθήματος ΥΣ14 Τεχνολογίες Εφαρμογών Διαδικτύου
Γεώργιος-Κωνσταντίνος Ζαχαρόπουλος
-
Introduction
-
Backend
-
Security
Ο στόχος της εργασίας ήταν να δημιουργηθεί μια διαδικτυακή εφαρμογή η οποία προσομοίαζε την γνωστή εφαρμογή δημοπρασιών ebay. Για το frontend χρησιμοποιήθηκε angular ενώ στο backend για την δημιουργία της βάσης (tables) έγινε χρήση sql και η σύνδεση της βάσης με το frontend πραγματοποιήθηκε με το springboot. Στην εργασία έχει υλοποιήθει και security (SSL/JWT).
Οι βασικοί πίνακες στην βάση μας είναι:
-
User: Στον πίνακα αποθηκεύονται οι πληροφορίες του χρήστη όπως (username, password, email, ...). Επίσης στον πίνακα κρατάμε την πληροφορία σχετικά με τους ρόλους που έχει ο χρήστης, δηλαδή αν είναι πωλητής, πλειοδότης ή διαχειριστής.
-
Bidder: Στον πίνακα αποθηκεύονται οι πληροφορίες που χρειάζεται ο πλειοδότης όπως (χώρα, τοποθεσία). Υπάρχει συσχέτιση του πίνακα του User με του Bidder (ένα προς ένα).
-
Seller: Στον πίνακα αποθηκεύονται οι πληροφορίες που χρειάζεται ο πωλητής. Και εδώ όπως με τον Bidder υπάρχει συσχέτιση του πίνακα του User με του Seller(ένα προς ένα).
-
Item: Στον πίνακα αποθηκεύονται όλες οι πληροφορίες ενός αντικειμένου για δημοπρασία(όνομα, τιμή, κατηγορία κλπ.). Υπάρχει συσχέτιση του πίνακα του Seller με του Item(ένα προς πολλά).
-
Bid: Στον πίνακα αποθηκεύονται οι πληροφορίες μιας προσφοράς ενός Bidder για ένα Item(ποσό, ημερομηνία της προσφοράς). Υπάρχει συσχέτιση με τον πίνακα του Bidder (ένα προς πολλά), καθώς και με τον πίνακα του Item(ένα προς πολλά).
-
AuthRequest / AuthResponse: Οι πίνακες βοηθούν στην πιστοποίση του χρήστη όταν γίνεται η είσοδος στη εφαρμογή. Με το AuthRequest γίνεται το αίτημα στην βάση και το AuthResponse επιστρέφει το jwt που χρειάζεται ο χρήστης.
-
UserMessages: Με τον συγκεκριμένο πίνακα επιτυγχάνεται η ανταλλαγή μηνυμάτων μεταξύ των χρηστών. Ο πίνακας έχει συσχέτιση με τον πίνακα User (πολλά προς ένα).
Ακολουθήσαμε τις οδηγίες του μαθήματος και εμπεριέχεται στην εργασία security. Συγκεκριμένα προσθέσαμε πρωτόκολλο SSL χρησιμοποιώντας self-signed certificates και jason-web-token (bearer token). Στο token περιέχονται οι εξής ρόλοι:
-
USER_ROLE: Ο κάθε χρήστης κατά την είσοδό του (log-in) έχει αυτό τον ρόλο και είναι απαραίτητος για την βασική πλοήγηση στην εφαρμογή.
-
ADMIN_ROLE: Αυτόν τον ρόλο τον έχει μόνο ο λογαριασμός του διαχειριστή της εφαρμογής και ειναι απαραίτητος για την πλοήγηση του στις σελίδες διαχείρισης (admin pages).
-
SELLER_ROLE: Τον ρόλο τον έχουν μόνο οι χρήστες οι οποίοι έχουν δηλώσει στην εφαρμογή ότι θέλουν να είναι πωλητές.
-
BIDDER_ROLE: Τον ρόλο τον έχουν οι χρήστες οι οποίοι έχουν δηλώσει στην εφαρμογή ότι θέλουν να είναι πλειοδότες(bidders). Το jwt το αποθηκεύουμε στο local storage του web browser οπότε κάθε φορά είναι δυνατή η σύνδεση μοναδικού χρήστη στην εφαρμογή από τον συγκεκριμένο browser. Έχουμε υλοποιήσει guards ώστε ο χρήστης να έχει πρόσβαση μόνο στις δικές του σελίδες βάση του username του, καθώς και σε αυτές που έχει δικαίωμα βάση του ρόλου του.