xdoo / vaadin-demo

demo using vaadin with spring boot.
4 stars 2 forks source link

Mandantenfähigkeit in Service einbauen #16

Closed xdoo closed 9 years ago

xdoo commented 9 years ago

Die generierten Anwendungen sollen mandantenfähig sein. D.h. Es können die Daten von mehreren, von einander unabhängigen Mandanten parallel nebeneinander gespeichert werden. Hierzu muss jede Entität eine eindeutige Mandanten ID (MID) besitzen. Diese Mandanten ID referenziert auf eine Mandanten Tabelle. Unter einem Mandanten müssen ein oder viele User hängen. Über den (eigeloggten) User kommt man dann auf die Mandanten ID. Diese wird für die Selektion der Daten aus der DB verwendet.

xdoo commented 9 years ago

hängt von #15 ab

BilelTmar commented 9 years ago

Security ist schon mit Permission und Rollen eingebaut. es fehlt noch die Mandantenfähigkeit. Gibt es wichtige Arctikle zu dieser Thema ? Ich habe fast nichts gefunden. Danke

xdoo commented 9 years ago

Hi Bilel,

ich kenne keinen Artikel. Das ganze sollte aus meiner Sicht auch nicht auf Security Ebene statt finden, sondern auf Basis der Repositories. Du hast n Mandanten. Jedem Mandanten ist ein bis n user zu geordnet. Jetzt gilt es, bei Zugriffen auf die DB nur Datensätze heraus zu holen, die einem bestimmten Mandanten zugeordnet sind. Dazu muss aus dem Security Context der Principal geholt werden - deiresches er user name ist ja in der DB. Drüber läßt sich die Mandanten OID heraus finden. In jedem Datensatz muss es entsprechend auch eine Mandanten OID geben. Diese muss dann bei einer Suchanfrage mitgegeben werden. Du kannst dir überlegen, ob du dafür nicht ein generisches Repository baust, dass die CRUD Operationen mandantenfähig zur Verfügung stellt.

xdoo commented 9 years ago

Nimm hier bitte nicht Kode (das ist kein deutsches Wort). Wir können die ID einfach MID nennen.

BilelTmar commented 9 years ago

Hi Claus, Wie beschreiben, ist jede User einen Mandant zu geordnet. Dann wenn ein normal User(Sachbearbeiter) ein bürger zum beispiel erzeugt. Diese Bürger wird mit dem Mandant von diesem User gespeichert. Aber kann der Admin in diesem Fall den Buerger nicht gelesen. Wir könnten die mandanten nicht zu berücksichtigen wenn es um ein Admin(Authority) behandelt oder wird jede User ein bis n Mandanten zu geordnet sein . Was meinst du ?

xdoo commented 9 years ago

Hi Bilel,

ich bin mir nicht sicher ob ich alles verstanden habe. Ich schreibe einfach, wie ich das lösen würde. Mal sehen, ob es passt :)

  1. Alle User sind einem Mandanten zugeordnet. Ein Root User ist halt einem "technischen" Mandanten zugeordnet. Diesen können wir ja per default anlegen.
  2. Wenn solch ein User übergreifende Abfragen durchführen soll, dann benötigt er dafür eine entsprechende Operation, die natürlich durch einer (sehr selten zu vergebende) Permission abgesichert ist. Diese Permission darf auch nicht an einen normalen Mandanten User vergeben werden können. Am besten machen wir das alles wirklich mit einem default User.

Hoffe das war halbwegs verständlich. Wir können das im August ja nochmal diskutieren. Das ist sicher nichts entscheidendes. Die Referenzimplementierung kann ja weiter entwickelt werden. Viel wichtiger ist, dass der technische Durchstich geschafft ist.

xdoo commented 9 years ago

Aus meiner Sicht ist das implementiert und auch getestet (mit der Einschränkung von #21). Wenn du das auch so siehst, dann würde ich dieses issue schließen.

xdoo commented 9 years ago

hat einen Bezug zu #14, da die Suche auch Mandanten fähig sein muss.

xdoo commented 9 years ago

@btmar Wie ist hier der Stand? Ist das fertig Implementiert und getestet? Falls ja, bitte schließen.

BilelTmar commented 9 years ago

ja, schon