public ?string $email = null,
public ?string $name = null,
public ?array $groups = null,
+ public ?string $picture = null,
) {
}
$this->email = $claims->getClaim('email') ?? $this->email;
$this->name = static::getUserDisplayName($displayNameClaims, $claims) ?? $this->name;
$this->groups = static::getUserGroups($groupsClaim, $claims) ?? $this->groups;
+ $this->picture = static::getPicture($claims) ?: $this->picture;
}
- protected static function getUserDisplayName(string $displayNameClaims, ProvidesClaims $token): string
+ protected static function getUserDisplayName(string $displayNameClaims, ProvidesClaims $claims): string
{
$displayNameClaimParts = explode('|', $displayNameClaims);
$displayName = [];
foreach ($displayNameClaimParts as $claim) {
- $component = $token->getClaim(trim($claim)) ?? '';
+ $component = $claims->getClaim(trim($claim)) ?? '';
if ($component !== '') {
$displayName[] = $component;
}
return implode(' ', $displayName);
}
- protected static function getUserGroups(string $groupsClaim, ProvidesClaims $token): ?array
+ protected static function getUserGroups(string $groupsClaim, ProvidesClaims $claims): ?array
{
if (empty($groupsClaim)) {
return null;
}
- $groupsList = Arr::get($token->getAllClaims(), $groupsClaim);
+ $groupsList = Arr::get($claims->getAllClaims(), $groupsClaim);
if (!is_array($groupsList)) {
return null;
}
return is_string($val);
}));
}
+
+ protected static function getPicture(ProvidesClaims $claims): ?string
+ {
+ $picture = $claims->getClaim('picture');
+ if (is_string($picture) && str_starts_with($picture, 'http')) {
+ return $picture;
+ }
+
+ return null;
+ }
}