diff options
Diffstat (limited to 'Acl/Domain/UserSecurityIdentity.php')
-rw-r--r-- | Acl/Domain/UserSecurityIdentity.php | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/Acl/Domain/UserSecurityIdentity.php b/Acl/Domain/UserSecurityIdentity.php index 3b03191..3c30a96 100644 --- a/Acl/Domain/UserSecurityIdentity.php +++ b/Acl/Domain/UserSecurityIdentity.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Security\Acl\Domain; +use Symfony\Component\Security\Authentication\Token\TokenInterface; use Symfony\Component\Security\User\AccountInterface; use Symfony\Component\Security\Acl\Model\SecurityIdentityInterface; @@ -51,7 +52,24 @@ class UserSecurityIdentity implements SecurityIdentityInterface */ public static function fromAccount(AccountInterface $user) { - return new self((string) $user, get_class($user)); + return new self($user->getUsername(), get_class($user)); + } + + /** + * Creates a user security identity from a TokenInterface + * + * @param TokenInterface $token + * @return UserSecurityIdentity + */ + public static function fromToken(TokenInterface $token) + { + $user = $token->getUser(); + + if ($user instanceof AccountInterface) { + return self::fromAccount($user); + } + + return new self((string) $user, is_object($user)? get_class($user) : get_class($token)); } /** |