Skip to content

fix: [#474] return raw_user_info_from_provider in get_user_info in gi… #553

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 19 additions & 17 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [unreleased]

- Return `raw_user_info_from_provider` in github provider [#474]

## [0.27.0] - 2024-12-30

- Added OAuth2Provider recipe
Expand Down Expand Up @@ -277,7 +279,7 @@ async def change_email(req: ChangeEmailBody, session: SessionContainer = Depends
# Update the email
await update_email_or_password(
session.get_recipe_user_id(),
email,
email,
)

# ...
Expand Down Expand Up @@ -360,7 +362,7 @@ from supertokens_python.types import RecipeUserId

def functions_override(original_implementation: RecipeInterface):
o_create_new_session = original_implementation.create_new_session

async def n_create_new_session(
user_id: str,
recipe_user_id: RecipeUserId,
Expand All @@ -377,7 +379,7 @@ def functions_override(original_implementation: RecipeInterface):
return await o_create_new_session(user_id, recipe_user_id, access_token_payload, session_data_in_database, disable_anti_csrf, tenant_id, user_context)

original_implementation.create_new_session = n_create_new_session

return original_implementation

session.init(override=session.InputOverrideConfig(functions=functions_override))
Expand All @@ -395,7 +397,7 @@ from supertokens_python.types import RecipeUserId

def functions_override(original_implementation: RecipeInterface):
o_create_new_session = original_implementation.create_new_session

async def n_create_new_session(
user_id: str,
recipe_user_id: RecipeUserId,
Expand All @@ -412,7 +414,7 @@ def functions_override(original_implementation: RecipeInterface):
return await o_create_new_session(user_id, recipe_user_id, access_token_payload, session_data_in_database, disable_anti_csrf, tenant_id, user_context)

original_implementation.create_new_session = n_create_new_session

return original_implementation

session.init(override=session.InputOverrideConfig(functions=functions_override))
Expand Down Expand Up @@ -632,7 +634,7 @@ thirdparty.init(
third_party_id="google",
# rest of the config
),

# Add the following line to make this provider available in non-public tenants by default
include_in_non_public_tenants_by_default=True
),
Expand All @@ -641,7 +643,7 @@ thirdparty.init(
third_party_id="github",
# rest of the config
),

# Add the following line to make this provider available in non-public tenants by default
include_in_non_public_tenants_by_default=True
),
Expand Down Expand Up @@ -733,7 +735,7 @@ for tenant in tenants_res.tenants:

- The way to get user information has changed:
- If you are using `get_users_by_email` from `thirdpartyemailpassword` recipe:

Before:
```python
from supertokens_python.recipe.thirdpartyemailpassword.syncio import get_users_by_email
Expand All @@ -745,20 +747,20 @@ for tenant in tenants_res.tenants:
```python
from supertokens_python.recipe.thirdparty.syncio import get_users_by_email as get_users_by_email_third_party
from supertokens_python.recipe.emailpassword.syncio import get_user_by_email as get_user_by_email_emailpassword

third_party_user_info = get_users_by_email_third_party("public", "[email protected]")

email_password_user_info = get_user_by_email_emailpassword("public", "[email protected]")

if email_password_user_info is not None:
print(email_password_user_info)

if len(third_party_user_info) > 0:
print(third_party_user_info)
```

- If you are using `get_user_id` from `thirdpartyemailpassword` recipe:

Before:
```python
from supertokens_python.recipe.thirdpartyemailpassword.syncio import get_user_by_id
Expand All @@ -783,9 +785,9 @@ for tenant in tenants_res.tenants:
else:
print(thirdparty_user)
```

- If you are using `get_users_by_email` from `thirdpartypasswordless` recipe:

Before:
```python
from supertokens_python.recipe.thirdpartypasswordless.syncio import get_users_by_email
Expand All @@ -797,20 +799,20 @@ for tenant in tenants_res.tenants:
```python
from supertokens_python.recipe.thirdparty.syncio import get_users_by_email as get_users_by_email_third_party
from supertokens_python.recipe.passwordless.syncio import get_user_by_email as get_user_by_email_passwordless

third_party_user_info = get_users_by_email_third_party("public", "[email protected]")

passwordless_user_info = get_user_by_email_passwordless("public", "[email protected]")

if passwordless_user_info is not None:
print(passwordless_user_info)

if len(third_party_user_info) > 0:
print(third_party_user_info)
```

- If you are using `get_user_id` from `thirdpartypasswordless` recipe:

Before:
```python
from supertokens_python.recipe.thirdpartypasswordless.syncio import get_user_by_id
Expand Down Expand Up @@ -1022,7 +1024,7 @@ With this update, verify_session will return a 401 error if it detects multiple
)
```

- In the session recipe, if there is an `UNAUTHORISED` or `TOKEN_THEFT_DETECTED` error, the session tokens are cleared in the response regardless of if you have provided your own `error_handlers` in `session.init`
- In the session recipe, if there is an `UNAUTHORISED` or `TOKEN_THEFT_DETECTED` error, the session tokens are cleared in the response regardless of if you have provided your own `error_handlers` in `session.init`

## [0.17.0] - 2023-11-14
- Fixes `create_reset_password_link` in the emailpassword recipe wherein we passed the `rid` instead of the token in the link
Expand Down
9 changes: 6 additions & 3 deletions supertokens_python/recipe/thirdparty/providers/github.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

from .custom import GenericProvider, NewProvider
from ..provider import Provider, ProviderConfigForClient, ProviderInput
from ..types import RawUserInfoFromProvider


class GithubImpl(GenericProvider):
Expand All @@ -45,16 +46,18 @@ async def get_user_info(
"Accept": "application/vnd.github.v3+json",
}

raw_response = {}
raw_user_info_from_provider = RawUserInfoFromProvider({}, {})

email_info: List[Any] = await do_get_request("https://api.github.com/user/emails", headers=headers) # type: ignore
user_info = await do_get_request("https://api.github.com/user", headers=headers)

raw_response["emails"] = email_info
raw_response["user"] = user_info
user_info["emails"] = email_info
raw_user_info_from_provider.from_user_info_api = user_info

result = UserInfo(
third_party_user_id=str(user_info.get("id")),
email=None,
raw_user_info_from_provider=raw_user_info_from_provider,
)

for info in email_info:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look fine to me. please update changelog and version.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changelog updated

Expand Down