Ankündigung

Einklappen
Keine Ankündigung bisher.

Silex - Login mit Userdaten

Einklappen

Neue Werbung 2019

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

  • Silex - Login mit Userdaten

    Hi,

    ich möchte gerne folgendes mit Silex bewerkstelligen:
    Es gibt eine Anwendung die einen Login benötigt. Das läuft auch mit der Security Firewall. Nach dem Login sollen die Daten des angemeldeten Users (Name, E-Mail, Personalnummer, Benutzerrolle) angezeigt werden.

    Das ist genau mein Problem. Wie schaffe ich es die diese Daten in den Login-Prozess zu integrieren? Wo muss ich da ansetzen?


  • #2
    Das machst du regulär mit einem user defined Entity Provider: http://symfony.com/doc/current/cookb..._provider.html
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Danke für den Tipp.
      Als Einsteiger ist das harte Kost. Ich suche und suche und finde keine Anhaltspunkte die mich weiterbringen.

      Ich habe eine Klasse UserProvider die das Interface UserProviderInterface implementiert hat. Damit hole ich mir die Daten aus der Mysql.
      Jetzt ist nur die Frage wo ich zum Beispiel meine Userdaten um die Abteilung erweitere.

      Kommentar


      • #4
        Das geht dann schon eher in die Richtung ACL:

        http://symfony.com/doc/current/cookb...urity/acl.html
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Zitat von kaptainIglo Beitrag anzeigen
          Jetzt ist nur die Frage wo ich zum Beispiel meine Userdaten um die Abteilung erweitere.
          das machste ja im user objekt

          PHP-Code:
          class User implements UserInterface, \Serializable{
          //some properties
          private $department;
          public function 
          getDepartment(){
          return 
          $this->department;
          }

          und im repository beim laden des users rufste dann setDepartment auf
          apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

          Kommentar


          • #6
            @BlackScorp
            Danke für die Antwort.

            Ich habe bisher eine Klasse
            PHP-Code:
            class UserProvider implements UserProviderInterface 
            Hier habe ich die Funktion
            PHP-Code:

            public function loadUserByUsername($username)
                {
                    
            $stmt $this->db->executeQuery('SELECT * FROM users WHERE username = ?', array(strtolower($username)));
                    if (!
            $user $stmt->fetch()) {
                        
            //throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
                        
            throw new BadCredentialsException('Falsche Kombination aus Nutzername und Passwort.');
                        
                    }
             
                    return new 
            User($user['username'], $user['password'], explode(','$user['roles']), truetruetruetrue);
                } 
            Wenn ich Dich richtig verstanden habe, lege ich eine Userklasse an?
            Vielleicht kannst Du mir noch ein wenig an die Hand gehen?

            Kommentar


            • #7
              statt
              PHP-Code:
                if (!$user $stmt->fetch()) {
                          
              //throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
                          
              throw new BadCredentialsException('Falsche Kombination aus Nutzername und Passwort.');
                          
                      } 
                   return new 
              User($user['username'], $user['password'], explode(','$user['roles']), truetruetruetrue); 
              einfach
              PHP-Code:
                if (!$row$stmt->fetch()) {
                          
              //throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
                          
              throw new BadCredentialsException('Falsche Kombination aus Nutzername und Passwort.');
                          
                      } 
              $user = new User($row['username'], $row['password'], explode(','$row['roles']), truetruetruetrue);
              $user->setDepartment($row['department']);
              return 
              $user
              die vielen trues im konstruktor, würde ich auch als einzelne setters/getters einstellen, stell sicher dass im konstruktor nur notwendige informationen übergeben werden.

              ubrigens deine exception passt nicht zur methode. du hast eine methode die einen user nach usernamen suchen soll und wenn der user nicht exestiert, schmeißt du eine exception dass nutzername und passwort nicht stimmt? die auskommentierte exception allerdings ist die richtigere.

              diese methode wirste sicherlich noch an anderen stellen wiederverwenden, zb eine normale usersuche die nichts mit login/registrierung zu tun hat, wird es dich dann nicht verwirren wenn du so eine exception dann kriegst?
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

              Kommentar


              • #8
                Danke für die Tipps und Hinweise.

                Kommentar

                Lädt...
                X