Rechtesystem für ACP

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

  • Rechtesystem für ACP

    Hi,
    habe jetzt ein Usermanagement System zum Teil geschrieben, ist ja auch erstmal kein Problem, dann wollte ich verschiedene Userlevels für den Adminbereich, war auch kein Problem, dann kam's aber, ich musste 1000de if-Schleife verwenden, um jedem User genau das Recht zu geben, meinetwegen er darf News editieren, alle außer die der Gruppe admins, etc. Wie könnte ich ein richtiges Rechtesystem entwerfen, d.h. wo man bsw. mit checkboxen angeben kann, er darf news posten, kategorie editieren, news bearbeiten,etc.
    Hat jemand ne Idee?
    (Suche habe ich benutzt, aber nur Themen mit keinem richtigen Bezug zu meinem Problem gefunden.)

  • #2
    du machst eine Rechte tabelle wo drin steht, user x darf das und das und das

    bei der Abfrage fürs editieren machst du einfach: if($loeschen == $row->loeschen)
    so, wenn in der Tabelle bei dem User für loeschen eine 1 (true) steht, dann darf er loeschen, ansonsten darf ers nicht.
    Zuletzt geändert von Benny-one; 18.10.2004, 10:18.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Danke, dass hilft mir schon weiter, aber ich habe ja das Problem, wenn ein Moderator mit dem Userlevel 4 eine News editieren oder löschen, etc. will darf er alle löschen, außer die der Userlevelgruppe 5 (Admins), kann man das irgendwie mit einbinden?

      Kommentar


      • #4
        der user bekommt ein Userlevel, der Admin auch, im Beitrag muss das Userlevel des Erstellers vermerkt werden.

        dann prüfst du:

        if(($loeschen == $row->loeschen) && ($user_level_beitrag <= $user_level))
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          Danke, habe jetzt folgende if-Schleife:
          PHP-Code:
          if((($rechte_edit == true) && (db_level() == 4) && db_level_5($autor) != $autor
          or (
          db_level() == 5) or (($rechte_edit == true) && (db_level_4($autor) != $autor
          && (
          db_level_5($autor) != $autor) && (db_level() == 3))) 
          Kann man die noch verkürzen?

          Kommentar


          • #6
            erklär mal kurz die einzelnen werte
            Sunshine CMS
            BannerAdManagement
            Borlabs - because we make IT easier
            Formulargenerator [color=red]Neu![/color]
            Herkunftsstatistik [color=red]Neu![/color]

            Kommentar


            • #7
              db_level() : gibt das Level aus der Datenbank zurück (wird vorher mit eingeloggtem Usernamen vergliechen)
              db_level_4($autor) und db_level_5($autor): geben den den Autorennamen zurück, jeweils mit dem Level 4 oder 5
              $autor: Autorenname der die News gepostet hat
              $rechte_edit: Ob der User editieren darf oder nicht

              Kommentar


              • #8
                warum so umständlich?
                also ist: db_level_4, db_level_5 immer eine extra spalte in deiner tabelle - wo ein true drinnen steht???
                Sunshine CMS
                BannerAdManagement
                Borlabs - because we make IT easier
                Formulargenerator [color=red]Neu![/color]
                Herkunftsstatistik [color=red]Neu![/color]

                Kommentar


                • #9
                  Nein, dass ist eine Funktion, die aus der Datenbanktabelle, inder die User gespeichert sind, einfach das Userlevel ausliest (des Autors) und diesen Namen des Autors dann ausgibt.

                  Kommentar


                  • #10
                    öhm, wieso sooo umständlich?

                    Script

                    Verbinde Datenbank
                    Selektiere die UserTabelle
                    nehme Werte von User $autor

                    Selektiere die RechteTabelle
                    nehme Werte von User $autor

                    Selektiere die BeitragTabelle
                    nehme Werte von Beitrag ID

                    if(($row_recht->edit == true) && ($row_beitrag->ersteller_level <= $row_user->level))

                    fertig.
                    Sunshine CMS
                    BannerAdManagement
                    Borlabs - because we make IT easier
                    Formulargenerator [color=red]Neu![/color]
                    Herkunftsstatistik [color=red]Neu![/color]

                    Kommentar


                    • #11
                      Das Erstellerlevel wird ja nicht in der Newstabelle gespeichert, sondern nur in der Usertabelle, deshalb solch ein Aufwand, wenn in der Newstabelle 1000de News stehen, macht eine Spalte mehr -> schlechte Performence, deshalb habe ich versucht nur das nötigste dort zu speichern.

                      Kommentar


                      • #12
                        ach quark! das macht fast nichts aus.
                        da kannste ruhig das level speichern.

                        alternative:
                        du speicherst die USER ID statt dem Usernamen

                        und machst dann ne Abfrage in der DB

                        Selektiere werte von USER ID
                        und da dann das Level nehmen und vergleichen.
                        Sunshine CMS
                        BannerAdManagement
                        Borlabs - because we make IT easier
                        Formulargenerator [color=red]Neu![/color]
                        Herkunftsstatistik [color=red]Neu![/color]

                        Kommentar


                        • #13
                          Aber nen bissle schon
                          Danke, jedenfalls für deine Hilfe, werde sehen, ob ich es so lasse oder doch deine Variante nehme, ich glaube werde aber meine nehmen, da mir die Performence wirklich wichtig ist, lieber ein "etwas" langsameres ACP und dafür eine schnelle Newsausgabe. Aber der Tag ist ja noch lang.

                          Kommentar

                          Lädt...
                          X