Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
PasswordUpgradeBadge example
if
(
null ===
$user
->
getPassword
(
)
)
{
throw
new
BadCredentialsException
(
'The presented password is invalid.'
)
;
}
if
(
!
$this
->hasherFactory->
getPasswordHasher
(
$user
)
->
verify
(
$user
->
getPassword
(
)
,
$presentedPassword
,
$user
instanceof LegacyPasswordAuthenticatedUserInterface ?
$user
->
getSalt
(
)
: null
)
)
{
throw
new
BadCredentialsException
(
'The presented password is invalid.'
)
;
}
$badge
->
markResolved
(
)
;
if
(
!
$passport
->
hasBadge
(
PasswordUpgradeBadge::
class
)
)
{
$passport
->
addBadge
(
new
PasswordUpgradeBadge
(
$presentedPassword
)
)
;
}
return
;
}
if
(
$passport
->
hasBadge
(
CustomCredentials::
class
)
)
{
/** @var CustomCredentials $badge */
$badge
=
$passport
->
getBadge
(
CustomCredentials::
class
)
;
if
(
$badge
->
isResolved
(
)
)
{
return
;
}
public
function
testAddsNoPasswordUpgradeBadgeIfItAlreadyExists
(
)
{
$hasher
=
$this
->
createMock
(
PasswordHasherInterface::
class
)
;
$hasher
->
expects
(
$this
->
any
(
)
)
->
method
(
'verify'
)
->
with
(
'password-hash', 'ThePa$$word'
)
->
willReturn
(
true
)
;
$this
->hasherFactory->
expects
(
$this
->
any
(
)
)
->
method
(
'getPasswordHasher'
)
->
with
(
$this
->
identicalTo
(
$this
->user
)
)
->
willReturn
(
$hasher
)
;
$passport
=
$this
->
getMockBuilder
(
Passport::
class
)
->
onlyMethods
(
[
'addBadge'
]
)
->
setConstructorArgs
(
[
new
UserBadge
(
'wouter',
fn
(
)
=>
$this
->user
)
,
new
PasswordCredentials
(
'ThePa$$word'
)
,
[
new
PasswordUpgradeBadge
(
'ThePa$$word'
)
]
]
)
->
getMock
(
)
;
$passport
->
expects
(
$this
->
never
(
)
)
->
method
(
'addBadge'
)
->
with
(
$this
->
isInstanceOf
(
PasswordUpgradeBadge::
class
)
)
;
$this
->listener->
checkPassport
(
$this
->
createEvent
(
$passport
)
)
;
}
public
function
testAddsNoPasswordUpgradeBadgeIfPasswordIsInvalid
(
)
{
$hasher
=
$this
->
createMock
(
PasswordHasherInterface::
class
)
;
$hasher
->
expects
(
$this
->
any
(
)
)
->
method
(
'verify'
)
->
with
(
'password-hash', 'ThePa$$word'
)
->
willReturn
(
false
)
;
$this
->hasherFactory->
expects
(
$this
->
never
(
)
)
->
method
(
'getPasswordHasher'
)
;
$this
->listener->
onLoginSuccess
(
$event
)
;
}
public
static
function
provideUnsupportedEvents
(
)
{
// no password upgrade badge
yield
[
self::
createEvent
(
new
SelfValidatingPassport
(
new
UserBadge
(
'test',
fn
(
)
=>
new
DummyTestPasswordAuthenticatedUser
(
)
)
)
)
]
;
// blank password
yield
[
self::
createEvent
(
new
SelfValidatingPassport
(
new
UserBadge
(
'test',
fn
(
)
=>
new
DummyTestPasswordAuthenticatedUser
(
)
)
,
[
new
PasswordUpgradeBadge
(
'', self::
createPasswordUpgrader
(
)
)
]
)
)
]
;
}
public
function
testUpgradeWithUpgrader
(
)
{
$passwordUpgrader
=
$this
->
getMockForAbstractClass
(
TestMigratingUserProvider::
class
)
;
$passwordUpgrader
->
expects
(
$this
->
once
(
)
)
->
method
(
'upgradePassword'
)
->
with
(
$this
->user, 'new-hash'
)
;
$event
=
$this
->
createEvent
(
new
SelfValidatingPassport
(
new
UserBadge
(
'test',
fn
(
)
=>
$this
->user
)
,
[
new
PasswordUpgradeBadge
(
'pa$$word',
$passwordUpgrader
)
]
)
)
;
$credentials
=
$this
->
getCredentials
(
$data
)
;
}
catch
(
BadRequestHttpException
$e
)
{
$request
->
setRequestFormat
(
'json'
)
;
throw
$e
;
}
$userBadge
=
new
UserBadge
(
$credentials
[
'username'
]
,
$this
->userProvider->
loadUserByIdentifier
(
...
)
)
;
$passport
=
new
Passport
(
$userBadge
,
new
PasswordCredentials
(
$credentials
[
'password'
]
)
,
[
new
RememberMeBadge
(
(array)
$data
)
]
)
;
if
(
$this
->userProvider instanceof PasswordUpgraderInterface
)
{
$passport
->
addBadge
(
new
PasswordUpgradeBadge
(
$credentials
[
'password'
]
,
$this
->userProvider
)
)
;
}
return
$passport
;
}
public
function
createToken
(
Passport
$passport
, string
$firewallName
)
: TokenInterface
{
return
new
UsernamePasswordToken
(
$passport
->
getUser
(
)
,
$firewallName
,
$passport
->
getUser
(
)
->
getRoles
(
)
)
;
}
public
function
onAuthenticationSuccess
(
Request
$request
, TokenInterface
$token
, string
$firewallName
)
: ?Response
{
$credentials
=
$this
->
getCredentials
(
$request
)
;
$userBadge
=
new
UserBadge
(
$credentials
[
'username'
]
,
$this
->userProvider->
loadUserByIdentifier
(
...
)
)
;
$passport
=
new
Passport
(
$userBadge
,
new
PasswordCredentials
(
$credentials
[
'password'
]
)
,
[
new
RememberMeBadge
(
)
]
)
;
if
(
$this
->options
[
'enable_csrf'
]
)
{
$passport
->
addBadge
(
new
CsrfTokenBadge
(
$this
->options
[
'csrf_token_id'
]
,
$credentials
[
'csrf_token'
]
)
)
;
}
if
(
$this
->userProvider instanceof PasswordUpgraderInterface
)
{
$passport
->
addBadge
(
new
PasswordUpgradeBadge
(
$credentials
[
'password'
]
,
$this
->userProvider
)
)
;
}
return
$passport
;
}
public
function
createToken
(
Passport
$passport
, string
$firewallName
)
: TokenInterface
{
return
new
UsernamePasswordToken
(
$passport
->
getUser
(
)
,
$firewallName
,
$passport
->
getUser
(
)
->
getRoles
(
)
)
;
}
public
function
onAuthenticationSuccess
(
Request
$request
, TokenInterface
$token
, string
$firewallName
)
: ?Response
{
public
function
authenticate
(
Request
$request
)
: Passport
{
$username
=
$request
->headers->
get
(
'PHP_AUTH_USER'
)
;
$password
=
$request
->headers->
get
(
'PHP_AUTH_PW', ''
)
;
$userBadge
=
new
UserBadge
(
$username
,
$this
->userProvider->
loadUserByIdentifier
(
...
)
)
;
$passport
=
new
Passport
(
$userBadge
,
new
PasswordCredentials
(
$password
)
)
;
if
(
$this
->userProvider instanceof PasswordUpgraderInterface
)
{
$passport
->
addBadge
(
new
PasswordUpgradeBadge
(
$password
,
$this
->userProvider
)
)
;
}
return
$passport
;
}
public
function
createToken
(
Passport
$passport
, string
$firewallName
)
: TokenInterface
{
return
new
UsernamePasswordToken
(
$passport
->
getUser
(
)
,
$firewallName
,
$passport
->
getUser
(
)
->
getRoles
(
)
)
;
}
public
function
onAuthenticationSuccess
(
Request
$request
, TokenInterface
$token
, string
$firewallName
)
: ?Response
{