diff --git a/app/libs/auth/User.php b/app/libs/auth/User.php index cf3f2550..1824cda9 100644 --- a/app/libs/auth/User.php +++ b/app/libs/auth/User.php @@ -21,6 +21,9 @@ class User extends BaseModelEloquent implements UserInterface, IOpenIdUser, IOAu { protected $table = 'openid_users'; + /** + * @var Member + */ private $member; public function trusted_sites() @@ -372,4 +375,14 @@ class User extends BaseModelEloquent implements UserInterface, IOpenIdUser, IOAu } return $scopes; } + + /** + * @return bool + */ + public function isEmailVerified() + { + $this->getAssociatedMember(); + + return $this->member->isEmailVerified(); + } } \ No newline at end of file diff --git a/app/libs/openid/model/IOpenIdUser.php b/app/libs/openid/model/IOpenIdUser.php index b78920e9..38a8d331 100644 --- a/app/libs/openid/model/IOpenIdUser.php +++ b/app/libs/openid/model/IOpenIdUser.php @@ -114,4 +114,9 @@ interface IOpenIdUser * @return int */ public function getExternalIdentifier(); + + /** + * @return bool + */ + public function isEmailVerified(); } \ No newline at end of file diff --git a/app/models/Member.php b/app/models/Member.php index 49c208b8..d8ed7fc7 100644 --- a/app/models/Member.php +++ b/app/models/Member.php @@ -42,4 +42,17 @@ class Member extends BaseModelEloquent } return true; } + + /** + * @return bool + */ + public function isEmailVerified() + { + $attr = $this->getAttributes(); + if(isset($attr['EmailVerified'])) + { + return (bool)$attr['EmailVerified']; + } + return false; + } } \ No newline at end of file diff --git a/app/services/oauth2/resource_server/UserService.php b/app/services/oauth2/resource_server/UserService.php index 3eb37398..ee206ffe 100644 --- a/app/services/oauth2/resource_server/UserService.php +++ b/app/services/oauth2/resource_server/UserService.php @@ -85,11 +85,11 @@ class UserService extends OAuth2ProtectedService implements IUserService if (in_array(self::UserProfileScope_Address, $scopes)) { // Address Claims - $data[AddressClaim::Country] = $current_user->getCountry(); + $data[AddressClaim::Country] = $current_user->getCountry(); $data[AddressClaim::StreetAddress] = $current_user->getCountry(); - $data[AddressClaim::PostalCode] = $current_user->getPostalCode(); - $data[AddressClaim::Region] = $current_user->getRegion(); - $data[AddressClaim::Locality] = $current_user->getLocality(); + $data[AddressClaim::PostalCode] = $current_user->getPostalCode(); + $data[AddressClaim::Region] = $current_user->getRegion(); + $data[AddressClaim::Locality] = $current_user->getLocality(); } if (in_array(self::UserProfileScope_Profile, $scopes)) { // Profile Claims @@ -97,18 +97,18 @@ class UserService extends OAuth2ProtectedService implements IUserService $pic_url = $current_user->getPic(); $pic_url = str_contains($pic_url, 'http') ? $pic_url : $assets_url . $pic_url; - $data[StandardClaims::Name] = $current_user->getFullName(); - $data[StandardClaims::GivenName] = $current_user->getFirstName(); + $data[StandardClaims::Name] = $current_user->getFullName(); + $data[StandardClaims::GivenName] = $current_user->getFirstName(); $data[StandardClaims::FamilyName] = $current_user->getLastName(); - $data[StandardClaims::NickName] = $current_user->getNickName(); - $data[StandardClaims::Picture] = $pic_url; - $data[StandardClaims::Birthdate] = $current_user->getDateOfBirth(); - $data[StandardClaims::Gender] = $current_user->getGender(); + $data[StandardClaims::NickName] = $current_user->getNickName(); + $data[StandardClaims::Picture] = $pic_url; + $data[StandardClaims::Birthdate] = $current_user->getDateOfBirth(); + $data[StandardClaims::Gender] = $current_user->getGender(); } if (in_array(self::UserProfileScope_Email, $scopes)) { // Email Claim $data[StandardClaims::Email] = $current_user->getEmail(); - $data[StandardClaims::EmailVerified] = false; + $data[StandardClaims::EmailVerified] = $current_user->isEmailVerified(); } } catch (Exception $ex) { $this->log_service->error($ex); @@ -157,12 +157,12 @@ class UserService extends OAuth2ProtectedService implements IUserService if (in_array(self::UserProfileScope_Address, $scopes)) { // Address Claims $address = array(); - $address[AddressClaim::Country] = $current_user->getCountry(); + $address[AddressClaim::Country] = $current_user->getCountry(); $address[AddressClaim::StreetAddress] = $current_user->getStreetAddress(); - $address[AddressClaim::PostalCode] = $current_user->getPostalCode(); - $address[AddressClaim::Region] = $current_user->getRegion(); - $address[AddressClaim::Locality] = $current_user->getLocality(); - $address[AddressClaim::Formatted] = $current_user->getFormattedAddress(); + $address[AddressClaim::PostalCode] = $current_user->getPostalCode(); + $address[AddressClaim::Region] = $current_user->getRegion(); + $address[AddressClaim::Locality] = $current_user->getLocality(); + $address[AddressClaim::Formatted] = $current_user->getFormattedAddress(); $claim_set->addClaim(new JWTClaim(StandardClaims::Address, new JsonValue($address))); @@ -187,7 +187,7 @@ class UserService extends OAuth2ProtectedService implements IUserService { // Address Claim $claim_set->addClaim(new JWTClaim(StandardClaims::Email, new StringOrURI($current_user->getEmail()))); - $claim_set->addClaim(new JWTClaim(StandardClaims::EmailVerified, new JsonValue(false))); + $claim_set->addClaim(new JWTClaim(StandardClaims::EmailVerified, new JsonValue($current_user->isEmailVerified()))); } } catch (Exception $ex) { $this->log_service->error($ex); diff --git a/app/services/openid/UserService.php b/app/services/openid/UserService.php index e4988973..3b8a3843 100644 --- a/app/services/openid/UserService.php +++ b/app/services/openid/UserService.php @@ -245,7 +245,8 @@ final class UserService implements IUserService $done = false; $fragment_nbr = 1; - $aux_proposed_username = $user_name_generator->generate($member); + $proposed_username = $user_name_generator->generate($member); + $aux_proposed_username = $proposed_username; do {