ForgeOpenPlatform
el

OpenPlatform

Χρήστες, ομάδες και δικαιώματα στο OpenPlatform

OpenPlatform · openplatform@5 openplatformusersgroupspermissions

Το OpenPlatform διαχωρίζει ποιος (χρήστες), πού (εφαρμογές) και τι (δικαιώματα), με τις ομάδες στη μέση:

  • Ένας χρήστης έχει όνομα, email, γλώσσα, κωδικό και σημαίες (sa για διαχειριστή, isconfirmed, isdisabled, isinactive, notifications, sounds...) και ανήκει σε οσεσδήποτε ομάδες (σχήμα @User, plugins/setup/schemas/users.js).
  • Μια ομάδα έχει όνομα, χρώμα, εικονίδιο, ένα προαιρετικό reference και μια λίστα δικαιωμάτων (σχήμα @Group, plugins/setup/schemas/groups.js).
  • Μια εφαρμογή δηλώνει τα δικά της δικαιώματα: καθένα έχει όνομα και ένα value, μια απλή συμβολοσειρά που καταλαβαίνει η εφαρμογή (plugins/setup/schemas/apps.js).

Πώς υπολογίζεται η πρόσβαση

Η συνάρτηση FUNC.permissions(userid, callback) στο definitions/func.js χτίζει, για έναν χρήστη:

  1. τις ομάδες του χρήστη που δεν είναι απενεργοποιημένες·
  2. τις γραμμές του tbl_group_permission αυτών των ομάδων: μια γραμμή με δικαίωμα χορηγεί αυτό το δικαίωμα μιας εφαρμογής και μια γραμμή χωρίς δικαίωμα χορηγεί απλώς την εφαρμογή (ο χρήστης τη βλέπει και λαμβάνει κενή λίστα δικαιωμάτων)·
  3. το value κάθε χορηγημένου δικαιώματος, μόνο για εφαρμογές που δεν έχουν αφαιρεθεί και δεν είναι απενεργοποιημένες.

Το αποτέλεσμα έχει τρία μέρη: τις εφαρμογές του χρήστη (apps), τις τιμές δικαιωμάτων ανά εφαρμογή (permissions) και τις ομάδες (groups). Αποθηκεύεται ως JSON στη στήλη cache του χρήστη, με ένα cachefilter που απαριθμεί τις ομάδες (G<id>) και τις εφαρμογές (A<id>) από τις οποίες εξαρτάται. Όταν αλλάζει μια ομάδα ή μια εφαρμογή, το FUNC.clearcache(id) καθαρίζει την προσωρινή μνήμη κάθε χρήστη του οποίου το φίλτρο περιέχει αυτό το αναγνωριστικό και το επόμενο αίτημα την ξαναχτίζει.

Πού το βλέπει η εφαρμογή

  • Η πύλη απαριθμεί μόνο τις εφαρμογές στο apps και αρνείται να ανοίξει οποιαδήποτε άλλη ("App not found").
  • Η εφαρμογή λαμβάνει τη δική της λίστα στο permissions όταν επαληθεύει μια εκκίνηση (πίνακας συμβολοσειρών value), μαζί με τα αναγνωριστικά των ομάδων, ώστε να αποφασίσει τι θα εμφανίσει (πώς συνδέεται μια εφαρμογή).
  • Η οθόνη ρύθμισης αποφασίζει ποιος μπορεί να τη χρησιμοποιήσει μέσω της σημαίας sa του χρήστη.

Μια καλή συνήθεια, που προκύπτει από τον τρόπο λειτουργίας του κώδικα: ονομάστε το value ενός δικαιώματος από την ενέργεια στην εφαρμογή σας (orders.read, orders.write) και αντιστοιχίστε ομάδες σε αυτές τις τιμές στο OpenPlatform, ώστε η εφαρμογή σας να ελέγχει μόνο συμβολοσειρές.