@@ -79,16 +79,17 @@ public function __construct(TokenStorageInterface $tokenStorage, UserProviderInt
79
79
public function handle (GetResponseEvent $ event )
80
80
{
81
81
$ request = $ event ->getRequest ();
82
+ $ username = $ request ->get ($ this ->usernameParameter ) ?: $ request ->headers ->get ($ this ->usernameParameter );
82
83
83
- if (!$ request -> get ( $ this -> usernameParameter ) ) {
84
+ if (!$ username ) {
84
85
return ;
85
86
}
86
87
87
- if (self ::EXIT_VALUE === $ request -> get ( $ this -> usernameParameter ) ) {
88
+ if (self ::EXIT_VALUE === $ username ) {
88
89
$ this ->tokenStorage ->setToken ($ this ->attemptExitUser ($ request ));
89
90
} else {
90
91
try {
91
- $ this ->tokenStorage ->setToken ($ this ->attemptSwitchUser ($ request ));
92
+ $ this ->tokenStorage ->setToken ($ this ->attemptSwitchUser ($ request, $ username ));
92
93
} catch (AuthenticationException $ e ) {
93
94
throw new \LogicException (sprintf ('Switch User failed: "%s" ' , $ e ->getMessage ()));
94
95
}
@@ -106,20 +107,21 @@ public function handle(GetResponseEvent $event)
106
107
/**
107
108
* Attempts to switch to another user.
108
109
*
109
- * @param Request $request A Request instance
110
+ * @param Request $request A Request instance
111
+ * @param string $username
110
112
*
111
113
* @return TokenInterface|null The new TokenInterface if successfully switched, null otherwise
112
114
*
113
115
* @throws \LogicException
114
116
* @throws AccessDeniedException
115
117
*/
116
- private function attemptSwitchUser (Request $ request )
118
+ private function attemptSwitchUser (Request $ request, $ username )
117
119
{
118
120
$ token = $ this ->tokenStorage ->getToken ();
119
121
$ originalToken = $ this ->getOriginalToken ($ token );
120
122
121
123
if (false !== $ originalToken ) {
122
- if ($ token ->getUsername () === $ request -> get ( $ this -> usernameParameter ) ) {
124
+ if ($ token ->getUsername () === $ username ) {
123
125
return $ token ;
124
126
}
125
127
@@ -133,8 +135,6 @@ private function attemptSwitchUser(Request $request)
133
135
throw $ exception ;
134
136
}
135
137
136
- $ username = $ request ->get ($ this ->usernameParameter );
137
-
138
138
if (null !== $ this ->logger ) {
139
139
$ this ->logger ->info ('Attempting to switch to user. ' , array ('username ' => $ username ));
140
140
}
0 commit comments