from oauth2_provider.oauth2_validators import OAuth2Validator class OIDCValidator(OAuth2Validator): oidc_claim_scope = { **OAuth2Validator.oidc_claim_scope, "name": "profile", "username": "profile", "phone": "profile", "avatar_url": "profile", "email": "profile", "email_verified": "profile", } def get_discovery_claims(self, request): return [ "iss", "sub", "aud", "exp", "iat", "auth_time", "name", "username", "phone", "avatar_url", "email", "email_verified" ] def get_additional_claims(self, request): data = { "sub": str(request.user.openid), "name": request.user.name, "username": request.user.username, "phone": request.user.phone, "avatar_url": request.user.avatar_url, } if request.user.email_verified: data["email"] = request.user.email else: data["email"] = request.user.email or request.user.signup_email data["email_verified"] = request.user.email_verified return data