balourdos / MemonomenaPeristatika.gr

Μεμονωμένα Περιστατικά αστυνομικής βίας
https://memonomenaperistatika.gr
GNU General Public License v3.0
79 stars 13 forks source link

Δημιουργία συστήματος authentication #54

Open ThanosKos opened 3 years ago

ThanosKos commented 3 years ago

Καλησπέρα! Συγκεντρώνω κάποιες ιδέες για να συζητήσουμε και να πείτε πως το βλέπετε.

Μεταφορά της φόρμας στο site

Η αρχική ιδέα είναι να μεταφερθεί η φόρμα σε σελίδα εντός του site. Φιλική προς το χρήστη και εύκολα διαχειρίσιμη από τους διαχειριστές. Ο λόγος είναι η αυτονομία του site ως προς τις λειτουργίες του. Να μη χρειάζεται να "παντρευτεί" κανένα εξωτερικό site.

Επίπεδα authentication

Admins: Οι διαχειριστές θα μπορούν να εγκρίνουν όλες τις εγγραφές της φόρμας, να διαγράφουν και να επεξεργάζονται κάθε entry

Members: Εγγραφή στο site και ανέβασμα περιστατικών στη φόρμα του site, το οποίο θα απαιτεί έγκριση. Ο απλός χρήστης θα μπορεί να επεξεργάζεται αυτά που έχει ανεβάσει μέσω της φόρμας, αλλά κάθε αλλαγή θα απαιτεί έγκριση από admin.

Verified members: Να μπορεί να δοθεί verified σε members που θεωρούνται έμπιστες πηγές (πχ. thepressproject κλπ) ώστε να ανεβάζουν μέσω της ίδιας φορμάς, αλλά χωρίς άδεια από admin. Θα μπορούν επίσης να επεξεργάζονται αυτά που έχουν ανεβάσει χωρίς έγκριση.

Η εγγραφή προτείνω να γίνεται με unique username και κωδικό, χωρίς email, για να μη δεσμεύσει προσωπικά στοιχεία κάποιος.

balourdos commented 3 years ago

Ευχαριστούμε για τις προτάσεις! Είμαι σύμφωνος σε όλα, ειδικά η ιδέα του να έχουμε verified members ώστε να υπάρχει zero latency στο ανέβασμα είναι πολύ καλή.

Μου φαίνεται όμως αρκετή δουλειά με σχετικά μικρό benefit, σε σχέση με τα υπόλοιπα πράγματα που πρέπει να γίνουν, οπότε ίσως καθυστερήσει λίγο, εκτός αν βρεθεί κάποιος που θέλει να το αναλάβει.

Αν θέλει κάποιος να το αναλάβει, ας συζητήσουμε το πως ακριβώς θα δουλεύει εδώ πριν ξεκινήσει την δουλειά.

^NK

ThanosKos commented 3 years ago

Ωραία! Μπορώ κι εγω να ασχοληθώ. Μπορούμε να συζητήσουμε τι και πως και ίσως βρω και κάποιον ακόμα για βοήθεια!

Όλα ξεκινάνε από το να στηθεί βάση. Θα παίξουμε με docker για να σηκώσουμε μια mongo? Θα μπορούσε να γίνει και σε typegoose (mongoose για typescript) που εχει και εύκολη χρήση. Θα μπορούσαμε με άλλο τρόπο; Πως το σκέφτεσαι;

balourdos commented 3 years ago

Έχουμε ήδη μια βάση, είναι ένα sqlite αρχείο σε αυτό το repo. Νομίζω το πρώτο βήμα θα ήταν να την αντικαταστήσουμε μια SQL βάση που θα τρέχει στον server μας (μέσα σε ένα docker container ίσως), και να κάνουμε το site να δουλεύει με την υπάρχουσα μορφή μέσω αυτής της βάσης: Δηλαδή το generator script θα γράφει σε αυτή τη βάση και το vercel build θα φτιάχνει τις στατικές σελίδες διαβάζοντας από αυτή τη βάση, όπως ακριβώς γίνεται τώρα.

Μόλις γίνει αυτό, θέλουμε ουσιαστικά να αντικαταστήσουμε τον generator με ένα admin panel για να γίνει αυτό που λες. Να κάνουμε δηλαδή update τη βάση όχι από ένα CSV μέσω ενός script αλλά μέσω ενός απλού web app. Για αυτό το σκοπό, μάλλον το πρώτο βήμα θα ήταν όχι να βάλουμε χρήστες, αλλά απλώς να να φτιάξουμε έναν editor για την βάση με HTTP simple auth πίσως από το nginx μας. Όταν αυτό δουλεύει καλά, μπορούμε να προσθέσουμε και ρόλους και χρήστες.

Πώς σου ακούγεται αυτό;