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?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Silex - Login mit Userdaten
Einklappen
Neue Werbung 2019
Einklappen
X
-
Silex - Login mit Userdaten
Stichworte: -
-
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']), true, true, true, true);
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']), true, true, true, true);
$user->setDepartment($row['department']);
return $user;
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:
-
@BlackScorp
Danke für die Antwort.
Ich habe bisher eine Klasse
PHP-Code:class UserProvider implements UserProviderInterface
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']), true, true, true, true);
}
Vielleicht kannst Du mir noch ein wenig an die Hand gehen?
Einen Kommentar schreiben:
-
Zitat von kaptainIglo Beitrag anzeigenJetzt ist nur die Frage wo ich zum Beispiel meine Userdaten um die Abteilung erweitere.
PHP-Code:class User implements UserInterface, \Serializable{
//some properties
private $department;
public function getDepartment(){
return $this->department;
}
}
Einen Kommentar schreiben:
-
Einen Kommentar schreiben:
-
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:
-
Das machst du regulär mit einem user defined Entity Provider: http://symfony.com/doc/current/cookb..._provider.html
Einen Kommentar schreiben:
Einen Kommentar schreiben: