Ankündigung

Einklappen
Keine Ankündigung bisher.

Grundstruktur einer Projkektbasierten Applikation

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Laravel] Grundstruktur einer Projkektbasierten Applikation

    Hallo Leute,

    ich habe die letzten Tage damit verbracht mir ein kleines Konzept auszudenken. Allerdings scheitere ich immer wieder an einer ziemlich großen Hürde. Ich habe ein Projekt welches Benutzern die Möglichkeit bieten soll für einen bestimmten Betrag ihr Projekt freizuschalten. In diesem Projekt können die Benutzer dann ebenfalls Benutzer anlegen, Ankündigungen schreiben und andere Teile des Projekts verwalten.

    An dieser Stelle bin ich tatsächlich auch schon auf das Problem gestoßen. Die Struktur. An sich sind es 2 getrennte Abteile: Unsere Registrierung, die "Benutzer" welche bei uns Bestellungen aufgeben so wie unsere Administrationsoberfläche - auf der anderen Seite haben wir das Abteil der Projektverwaltung.

    Mein erster Ansatz war folgender:
    - Benutzer A registriert sich auf test.net und macht den Bestellvorgang
    - Benutzer A registriert sich somit ein Projekt und erhält über den Link test.net/projekt Zugriff auf dieses

    Meine größten Probleme dabei sind jedoch:
    - Ich habe keine getrennten Benutzerdatenbanken. Meine Hauptbenutzer welche u.A. den Bestellprozess abwickeln sind gleichzeitig auch Benutzer welche in den Projekten zur Verfügung stehen, was für mich nicht funktionieren kann. Zusätzlich habe ich das Problem das einige Funktionen welche Laravel von Haus aus mit bringt (wie beispielsweise die ::resource directive im Router) dann nicht mehr zur Verfügung stehen, weil ich unterschiedliche Pfade für die Benutzererstellung #1 und #2 bräuchte. Zusätzlich müsste ich die komplette Authentifizierung ein zweites mal nachbauen und bei jedem Aufruf immer die Projektdaten mitladen (aufgrund von /projekt), da ich basierend auf diesen die Zuweisung des momentanen Projektes vornehme.

    Jetzt meine Idee für den Zweiten Ansatz, allerdings weiß ich nicht ob der in der Art umsetzbar wäre und bräuchte diesbezüglich ggf. etwas an Meinungen von Personen welche so etwas ähnliches bereits umgesetzt haben:

    - Wir splitten die beiden Bereiche in 2 abgetrennte Laravel-Instanzen und Datenbanken (was denke ich mal noch ein Stück besser wäre von der Sicherheit her)
    - Im Backend von uns greifen wir zusätzlich auf die Datenbank der Projekte zu

    Wäre das ein Weg den man heutzutage so nutzen würde, oder gibt es bessere Alternativen welche ich vielleicht einfach übersehe? Ein weiteres

  • #2
    Moin,

    Du könntest Laravel make:auth erweitern um deine eigene Funktionen.

    Erweiterung in Benutzerrollen

    - Administrator
    - Moderator
    - User

    Und für jedes Projekt Gruppieren

    Projekt:1 Hat die GruppenID:1 erstellt von User:2 - Rolle:Benutzer ((global) wird Rolle: Moderator in GruppenID:1) - jeden User den er erstellt darf sich nur innerhalb des Projektes bewegen (GruppenID:1)

    So grob skizziert

    Kommentar


    • #3
      Hey!
      Danke für die Antwort. Leider hilft das nicht den eigentlichen Problemen die bei der Nutzung des Systems entstehen, wofür ich keine Alternativen kenne. Was der Projektbenutzer (also nicht der Administrator) am Ende können soll ist quasi https://example.com (oder im case das man eine 2. Installation nutzt) dann panel.test.net aufruft und sich dort einloggen kann, anhand von dem eingetragenen Projekt dann dem Projekt zugeordnet wird. Leider habe ich aber auch bemerkt das bei dieser Idee ein weitere Fall auftreten kann:

      - Wenn 1 Benutzer bei Projekt 1 registriert wurde (Name: Test) und bei Projekt 2 ebenfalls (was durchaus möglich sein sollte, da die Projekte ja nicht zusammenhängend sind), könnte man diese nicht beim einloggen unterscheiden. Dafür ist mir so eben aber ein theoretisches Workaround eingefallen, wo man in dem fall dann für den Login einfach eine custom Seite für jedes Projekt macht wie https://panel.example.com/projekt, auch wenn dies nicht optimal ist.

      Kommentar


      • #4
        MOD: Bitte example.com ff als Beispiel nutzen, die ist dafür da. Die andere gehört wem anderen. Danke!
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von Comu Beitrag anzeigen

          - Wenn 1 Benutzer bei Projekt 1 registriert wurde (Name: Test) und bei Projekt 2 ebenfalls (was durchaus möglich sein sollte, da die Projekte ja nicht zusammenhängend sind), könnte man diese nicht beim einloggen unterscheiden. Dafür ist mir so eben aber ein theoretisches Workaround eingefallen, wo man in dem fall dann für den Login einfach eine custom Seite für jedes Projekt macht wie https://panel.example.com/projekt, auch wenn dies nicht optimal ist.
          Jeder Benutzer hat doch seine eigene individuelle ID und die ist der Gruppe so und so angehörig, damit sollte er doch identifizierbar sein?

          Ansonsten musst du es vlt. nochmal mal anhand eines Beispieles beschreiben.

          Kommentar

          Lädt...
          X