Permission Management

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

  • Permission Management

    Huhu,


    Wie würdet ihr die Rechte-Regelung auf eurer Seite umsetzen?

    Möchte nämlich verschiedenen Benutzern verschiedene Rechte erteilen.

    Von wegen: Du darfst die Seite sehen/nicht sehen. Du darfst 'ne Nachricht schreiben oder auch nicht... etc.!

    Vielen Dank.

    Achja, ich möchte die Werte "kann_sehen", "kann_schreiben" in der MySQL Datenbank speichern.

  • #2
    ungefähr so

    Einrichtungstabellen:
    user
    user_id |+ etliche Userinfos

    rechte
    rechte_id | recht_name | recht_besch

    gruppe
    gruppe_id | gruppe_name | gruppe_besch

    Rechtetabellen:
    gruppe_rechte
    gruppe_id | rechte_id

    user_rechte
    user_id | rechte_id

    user_gruppe
    user_id | gruppe_id


    Sollte eigentlich alle Möglichkeiten abdecken

    Natürlich in englischen Spaltennamen
    Zuletzt geändert von Payne_of_Death; 21.12.2004, 23:25.
    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

    Kommentar


    • #3
      Ich habs in etwas anderer Form gemacht..


      rechte
      rechte_id | rechte_titel | rechte_beschreibung

      user
      user_id | usw.

      user_rechte
      urechte_id | urechte_recht | urechte_wert


      Das ganze sollte man ja relativ einfach um Gruppen erweitern können.

      Größter Vorteil gegenüber dem System von PoD ist, dass in diesem System jedes Recht, sein Titel und seine Beschreibung nur einmal gespeichert wird. (Falls ich PoD's System richtig verstanden habe)


      Floriam
      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

      Kommentar


      • #4
        Original geschrieben von Floriam
        Ich habs in etwas anderer Form gemacht..


        rechte
        rechte_id | rechte_titel | rechte_beschreibung

        user
        user_id | usw.

        user_rechte
        urechte_id | urechte_recht | urechte_wert


        Das ganze sollte man ja relativ einfach um Gruppen erweitern können.

        Größter Vorteil gegenüber dem System von PoD ist, dass in diesem System jedes Recht, sein Titel und seine Beschreibung nur einmal gespeichert wird. (Falls ich PoD's System richtig verstanden habe)


        Floriam
        ehm nö User,Rechte und Gruppen werden in den Einrichtungstabellen festgelegt.......Die restlichen Tables referenzieren auf die Rechte, Gruppen, Usertabellen zur Ausgabe sofern dies notwendig ist

        Der Rest dient dazu die Rechte besser aufzuteilen u.A. in Gruppen.

        Um z.B. sagen zu können User die in der Gruppe Admin sind haben uneingeschränkten Zugang usw.
        Daneben kann festgehalten werden alle meine Newsposter sind X.
        Weiterhin gehören diverse Rechte zusammen da sie eine logische Einheit bilden was man dadurch auch abbilden lassen kann.

        Das Schema von Floriam funktioniert auch nur werden nicht alle Möglichkeiten abgebildet............
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #5
          Ich hab einfach ne Tabelle Access, da gibt es dann pro Recht eine Spalte in die entweder ein j oder ein n eingetragen wird und User bei denen die Rechte von den Standart-Rechten abgeändert werden, die bekommen dann da einen Datensatz mit der User-id...funktioniert bei mir ziemlich gut, und ist auch durch eine kleine Klasse ziemlich einfach nutzbar, ohne viele Queries zu schreiben oder so...kann ich jedem empfehlen (Klassen kann ich eigentlich sowieso nur noch empfehlen, vor allem für das Userhandling unter PHP5 ^^, ist einfach nur geil!)
          Und wie gesagt, Standart-User bekommen einfach Standart-Rechte, da spart man sich den Eintrag in der Datenbank

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Original geschrieben von ghostgambler
            Ich hab einfach ne Tabelle Access, da gibt es dann pro Recht eine Spalte in die entweder ein j oder ein n eingetragen wird und User bei denen die Rechte von den Standart-Rechten abgeändert werden, die bekommen dann da einen Datensatz mit der User-id...funktioniert bei mir ziemlich gut, und ist auch durch eine kleine Klasse ziemlich einfach nutzbar, ohne viele Queries zu schreiben oder so...kann ich jedem empfehlen (Klassen kann ich eigentlich sowieso nur noch empfehlen, vor allem für das Userhandling unter PHP5 ^^, ist einfach nur geil!)
            Und wie gesagt, Standart-User bekommen einfach Standart-Rechte, da spart man sich den Eintrag in der Datenbank
            Das irgendwo ja/nein eingetragen wird ist schon unnötig da das die Relation erledigt....

            Wenn ich meine Rechte Table mit der user_rechte verknüpfe stelle ich fest ob Eintrag vorhanden "er hat das recht" nicht vorhanden "er hat es nicht"
            [color=blue]MfG Payne_of_Death[/color]

            [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
            [color=red]Merke:[/color]
            [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

            Murphy`s Importanst LAWS
            Jede Lösung bringt nur neue Probleme
            Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
            In jedem kleinen Problem steckt ein großes, das gern raus moechte.

            Kommentar


            • #7
              Hmm, stellt sich mir die frage, was passiert, wenn ein user in mehreren gruppen ist.

              zählt die höhere berechtigung oder die niedrigere und wie liest du aus, wenn er in mehreren gruppen ist.....

              gruß

              Peacie

              Kommentar


              • #8
                bei mir isses so dass einzelne berechtigungen vor den gruppen zählen ..
                bsp: jmd ist in gruppe x und hat dadurch recht y, aber ich entzieh benutzer jmd das recht x explizit, dann hat ers auch nicht ;D

                ausserdem ham rechte und gruppen jeweils eine id - eh klar ..
                und je höher die id, desto mehr priorität

                sollte also jmd durch eine niedere gruppe ein recht entzogen bekommen und dasselbe recht durch eine höhere gruppe wieder erlangen, dann hat ers auch ..

                deiner fragestellung nach ist zu entnehmen, dass du davon ausgehst dass eine gruppe die andere überschreibt - ist bei mir nicht der fall
                rechte addieren sich einfach auf, wobei die rechte in einer höheren guppe, die gesetzt/entzogen werden die rechte überschreiben die in niederen gruppen gesetzt/entzogen worden sind ..

                hoffe das war verständlich
                mfg,
                [color=#0080c0]Coragon[/color]

                Kommentar


                • #9
                  Original geschrieben von Peacie
                  Hmm, stellt sich mir die frage, was passiert, wenn ein user in mehreren gruppen ist.

                  zählt die höhere berechtigung oder die niedrigere und wie liest du aus, wenn er in mehreren gruppen ist.....

                  gruß

                  Peacie
                  Da passiert nichts jedes Script sehe ich als eine Gruppe an mit Einzelberechtigungen. Darunter gibt es ein Recht news_mod z.B. was es erlaubt auf einmal alle Einzelrechte wirken zu lassen.....

                  So ist es in meinem alten Usermanagment.....

                  Geplant ist das ganze via eines Nested Sets umzusetzen um eben höhere Rechte und niedrigere Rechte zu gewichten.......Via Forumsuche gibt es auch noch einen Thread der sich damit befasst speziell auf Berechtigungen mit Nested Sets.....
                  [color=blue]MfG Payne_of_Death[/color]

                  [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                  [color=red]Merke:[/color]
                  [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                  Murphy`s Importanst LAWS
                  Jede Lösung bringt nur neue Probleme
                  Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                  In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                  Kommentar


                  • #10
                    sorry wenn ich den thread in ne andere richtung lenke, hat aber noch mit dem thema zu tun ;D

                    und zwar interessiert mich wo/wie ihr speichert welche berechtigungen es gibt ..
                    hat jede seite lesen, schreiben und sowas ?
                    wie verhält sichs dann mit anderen modulen ? bildergallerie zb .. bild posten ja / löschen nein ? thumbs bearbeiten, etc ..

                    würd das ganze nämlich auch gern variabel halten, könnte ja sein dass man für ein paar artikel, tutorials oä. andere berechtigungen brauchen soll, wo/wie stellt ihr das ein und wo/wie speichert ihr das ?

                    danke schonmal
                    mfg,
                    [color=#0080c0]Coragon[/color]

                    Kommentar


                    • #11
                      modulares System

                      wie ich es habe erlaubt individuelle Rechte zu erstellen, welche man aber in die Script direkt verankern muss....

                      Das gibt es anhand der News folgende REchte z.b:

                      News:
                      posten
                      update
                      delete
                      mod

                      comments:
                      close_comments
                      delete_all_comments
                      delete_comments
                      update_comments
                      comments_ip
                      [color=blue]MfG Payne_of_Death[/color]

                      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                      [color=red]Merke:[/color]
                      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                      Murphy`s Importanst LAWS
                      Jede Lösung bringt nur neue Probleme
                      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                      Kommentar


                      • #12
                        darum gehts mir ja: "im script verankern"

                        das möchte ich gerne umgehen,
                        wenn zb extern paar leutchen - unabhängig voneinander - versch. module entwickeln, dann kann doch niemand garantieren dass sie andere rechte verwenden (anm. meine rechte sind alle mit ner id belegt: 2^x)

                        wenn du in der benutzerverwaltung bist, wie weisst du/das script welche rechte es gibt zum setzen? liest du alle module ein?
                        mfg,
                        [color=#0080c0]Coragon[/color]

                        Kommentar


                        • #13
                          Original geschrieben von Coragon Rivito
                          wenn du in der benutzerverwaltung bist, wie weisst du/das script welche rechte es gibt zum setzen? liest du alle module ein?
                          Er hat ja eine Tabelle wo die ganzen Rechte drin stehen, dann ist es doch kein Problem diese sogar mit Beschreibung auszugeben und einem User zuzuordnen...
                          Und für dein Problem mit den Rechten für bestimmte Artikel:
                          Wieso speicherst du nicht einfach mit dem Artikel oder was auch immer, gleich in einer weiteren Spalte die user-ids, kommasepariert, die bei dem Artikel Rechte haben sollen? Oder du machst dir ein Array damit und hängst das per serialize in die Datenbank, dann ist es auch einfach möglich verschiedene Rechte zu vergeben. Du kommst aber nicht drum herum, irgendwo in deinem Code zu verankern, welches Recht das editieren erlauben soll usw.

                          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                          Wie man Fragen richtig stellt

                          Kommentar


                          • #14
                            artikel ist mir klar, sollte aber auch möglich sein für versch. funktionen in modulen: gallery: img hochladen, bearbeiten, löschen, kommentieren ...

                            da zerbrech ich mir den kopf
                            Zuletzt geändert von Coragon Rivito; 27.12.2004, 16:21.
                            mfg,
                            [color=#0080c0]Coragon[/color]

                            Kommentar


                            • #15
                              Original geschrieben von Coragon Rivito
                              artikel ist mir klar, sollte aber auch möglich sein für versch. funktionen in modulen: gallery: img hochladen, bearbeiten, löschen, kommentieren ...

                              da zerbrech ich mir den kopf
                              Du legst pro Recht, was du verteilen willst eines an.
                              Dann prüfst du, ob der User das Recht hat, und wenn er es hat, dann lässt du ihn die Aktion ausführen.

                              Du schreibst doch in deinem Code sowieso die Überprüfung für die Rechte. Also kannst du doch auch für verschiedene Aktionen auf verschiedene Rechte prüfen lassen.
                              Ein Recht ist doch etwas von dir definiertes. D.h. du kannst ein Recht "Gallery" nennen, oder du kannst es "Blog_eintraege_loeschen" nennen....ob du das Recht Gallery dann wiederum in deinem Code für die gesamte Gallery nutzt, bleibt doch dir überlassen
                              Und damit ist doch dein "Problem" dann gelöst, oder nicht? Und falls nicht, hab ich nicht verstanden, was du willst oder du hast das System nicht verstanden....und bevor ich mich jetzt für dumm halte, lies du dir lieber nochmal die vorigen Posts durch


                              btw. würde ich statt der IDs für die Rechte doch besser eindeutig Namen vergeben, damit wird dann der PHP-Code nicht so unübersichtlich.
                              Wenn Interesse besteht, kann ich ja auch mal meine Möglichkeit posten.
                              Reicht bestens aus und ist (IMHO) sehr übersichtlich Nur weiß ich nicht, inwieweit das für mehrere tausend User noch toll ist, siehe oben...sollte zwar nicht SO schlimm sein, aber wer auf die ressourcenschonendste Möglichkeit aus ist, sollte meine nochmal überdenken
                              btw. kann man damit auch einzelne Rechte für die Möglichkeiten einzelner "Module" vergeben, nicht dass das mit der Möglichkeit von Payne_of_Death anders wäre *hust*

                              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                              Wie man Fragen richtig stellt

                              Kommentar

                              Lädt...
                              X