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

  • kaptainIglo
    hat ein Thema erstellt Silex - Login mit Userdaten.

    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?

  • kaptainIglo
    antwortet
    Danke für die Tipps und Hinweise.

    Einen Kommentar schreiben:


  • BlackScorp
    antwortet
    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?

    Einen Kommentar schreiben:


  • kaptainIglo
    antwortet
    @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?

    Einen Kommentar schreiben:


  • BlackScorp
    antwortet
    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

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    Das geht dann schon eher in die Richtung ACL:

    http://symfony.com/doc/current/cookb...urity/acl.html

    Einen Kommentar schreiben:


  • kaptainIglo
    antwortet
    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.

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    Das machst du regulär mit einem user defined Entity Provider: http://symfony.com/doc/current/cookb..._provider.html

    Einen Kommentar schreiben:

Lädt...
X