Theoretische Fragen: Usermanagement, Rechtevergabe, Login

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

  • #31
    Original geschrieben von Abraxax
    rechte werden sinnvoll gruppiert. d.h. alle rechte zum thema news in eine gruppe, rechte zum thema gästebuch in eine andere gruppe. das machst du mit allen rechten. also alles was sich gruppieren lässt, kommt in eine gruppe rein.

    wenn der user nur einzel-rechte einer gruppe bekommen soll, musst du ihm das recht ohne den umweg über die gruppe geben.

    schaue dir nochmal oben meinen dump an. dort ist das genau so umgesetzt.
    Sehe ich das richtig, dass ich dann eine Standart-User-Gruppe habe, in die jeder neu angelegte User automatisch einsortiert wird. Und wenn ich dem User extra Rechte geben will, diese einfach in die Tabelle "uz_user_right" einfügen?
    Also ist das eigentlich die selbe Struktur wie bei mir, nur dass es zusätzlich noch eine Tabelle gibt, die den Usern direkt Rechte zuweißt.

    So, nun habe ich noch 3 Fragen:

    - wie kann ich es machen, dass wenn ein User in der Standartgruppe ist, aber ich ihm ein Recht dieser Gruppe wegnehmen will? Soll ich dann einfach in die Rechte-Tabelle ein '-1' für die Rechteid eintragen, die Ihm entzogen werden soll?

    - wie mache ich das mit den Standartwerten? Soll ich eine Standartgruppe anlegen, oder soll ich eine zusätzliche Spalte in die Rechte-Tabelle einfügen, die bestimmt, welches Recht ein Standartrecht ist und beim Anlegen eines neuen Users diese automatisch selektiert und für diesen User in die Tabelle 'uz_user_right' einfügt.

    - Kann es nicht irgendwie passieren, dass sich die Rechte der Gruppen mit den Extra angelkegten Rechten in die Quere kommen?

    Kommentar


    • #32
      Edit: Ok, so funktioniert der Query nun:

      PHP-Code:
      $sql "
                  SELECT 
                      users.id AS userid,
                      users.username AS username,
                      rights.rightname AS rightname,
                      rights.id AS rightid,
                      rights.php_id AS phpid
                  FROM
                      users,
                      groups,
                      groups_rights,
                      rights,
                      users_rights,
                      users_groups
                  WHERE
                      
                      users.username = '"
      .$this->_secure($username)."' AND
                      users.password = '"
      .$this->_secure($password)."' AND
                      
                      (
                       (
                        users.id = users_groups.users_id AND
                        users_groups.groups_id = groups_rights.groups_id AND
                        groups_rights.rights_id = rights.id AND
                        groups.id = users_groups.groups_id
                       )
                       OR
                       (
                         users_rights.users_id = users.id AND
                         users_rights.rights_id = rights.id
                       )
                      )
                        
                  GROUP BY
                      rightid
                  ORDER BY
                      rights.id ASC "


      Jetzt wären halt noch die Fragen zu beantworten, wie ich einem User spezielle Rechte abziehe, falls seine Gruppe diesees Recht besitzt.
      Ich habe schon versucht, einfach mal negative Werte in die users_rights Tabelle zu speichern. Aber ist ja klar, ,dass das nicht funktioniert, weil in der Where Bedigung das erfüllt sein muss:

      users_rights.rights_id = rights.id

      und es keine negative ID in der Rechte Tabelle gibt!

      Deswegen habe ich folgendfen Query versucht, der leider nicht funktioniert:

      PHP-Code:
      $sql "
                  SELECT 
                      users.id AS userid,
                      users.username AS username,
                      rights.rightname AS rightname,
                      rights.id AS rightid,
                      rights.php_id AS phpid
                  FROM
                      users,
                      groups,
                      groups_rights,
                      rights,
                      users_rights,
                      users_groups
                  WHERE
                      
                      users.username = '"
      .$this->_secure($username)."' AND
                      users.password = '"
      .$this->_secure($password)."' AND
                      
                      (
                       (
                        users.id = users_groups.users_id AND
                        users_groups.groups_id = groups_rights.groups_id AND
                        groups_rights.rights_id = rights.id AND
                        groups.id = users_groups.groups_id
                       )
                       OR
                       (
                        users_rights.users_id = users.id AND
                        (
                         ( 
                          users_rights.rights_id > 0 AND
                          users_rights.rights_id = rights.id
                         )
                         XOR
                         (
                          users_rights.rights_id < 0 
                         )
                        )    
                       )
                      )
                        
                  GROUP BY
                      rightid
                  ORDER BY
                      rights.id ASC "

      Ich dachte mir dabei halt, dass wenn users_rights.rights_id einen negativen Wert hat, soll halt nicht überprüft werden, ob es diese ID in der Rechte Tabelle gibt, andernfalls schon ...
      Zuletzt geändert von firstlord18; 10.12.2005, 11:21.

      Kommentar


      • #33
        So, nun habe ich noch 3 Fragen:

        - wie kann ich es machen, dass wenn ein User in der Standartgruppe ist, aber ich ihm ein Recht dieser Gruppe wegnehmen will? Soll ich dann einfach in die Rechte-Tabelle ein '-1' für die Rechteid eintragen, die Ihm entzogen werden soll?

        - wie mache ich das mit den Standartwerten? Soll ich eine Standartgruppe anlegen, oder soll ich eine zusätzliche Spalte in die Rechte-Tabelle einfügen, die bestimmt, welches Recht ein Standartrecht ist und beim Anlegen eines neuen Users diese automatisch selektiert und für diesen User in die Tabelle 'uz_user_right' einfügt.

        - Kann es nicht irgendwie passieren, dass sich die Rechte der Gruppen mit den Extra angelkegten Rechten in die Quere kommen?

        Kommentar

        Lädt...
        X