Skip to content
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

feat: oauth provider #549

Merged
merged 52 commits into from
Dec 30, 2024
Merged

feat: oauth provider #549

merged 52 commits into from
Dec 30, 2024

Conversation

sattvikc
Copy link
Collaborator

@sattvikc sattvikc commented Dec 4, 2024

Summary of change

(A few sentences about this PR)

Related issues

  • Link to issue1 here
  • Link to issue1 here

Test Plan

(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos!)

Documentation changes

(If relevant, please create a PR in our docs repo, or create a checklist here highlighting the necessary changes)

Checklist for important updates

  • Changelog has been updated
  • coreDriverInterfaceSupported.json file has been updated (if needed)
    • Along with the associated array in supertokens_python/constants.py
  • frontendDriverInterfaceSupported.json file has been updated (if needed)
  • Changes to the version if needed
    • In setup.py
    • In supertokens_python/constants.py
  • Had installed and ran the pre-commit hook
  • Issue this PR against the latest non released version branch.
    • To know which one it is, run find the latest released tag (git tag) in the format vX.Y.Z, and then find the latest branch (git branch --all) whose X.Y is greater than the latest released tag.
    • If no such branch exists, then create one from the latest released branch.
  • If have added a new web framework, update the supertokens_python/utils.py file to include that in the FRAMEWORKS variable
  • If added a new recipe that has a User type with extra info, then be sure to change the User type in supertokens_python/types.py
  • Make sure that syncio / asyncio functions are consistent.
  • If access token structure has changed
    • Modified test in tests/sessions/test_access_token_version.py to account for any new claims that are optional or omitted by the core

Remaining TODOs for this PR

  • Item1
  • Item2

@sattvikc sattvikc self-assigned this Dec 4, 2024
def redirect(self, url: str) -> BaseResponse:
if not self.response_sent:
self.set_header("Location", url)
self.set_status_code(302)
Copy link
Collaborator

Choose a reason for hiding this comment

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

doesn't this need to set response_sent?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

yes

def redirect(self, url: str) -> BaseResponse:
if not self.response_sent:
self.set_header("Location", url)
self.set_status_code(302)
Copy link
Collaborator

Choose a reason for hiding this comment

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

doesn't this need to set response_sent?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

yes

try:
session = await get_session(
api_options.request,
False,
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd prefer if this was a named param, but it doesn't matter too much.

authorization_header = api_options.request.get_header("authorization")

if authorization_header is None or not authorization_header.startswith("Bearer "):
api_options.response.set_header(
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think this needs to be ported to node


# Verify token signature using session recipe's JWKS
session_recipe = SessionRecipe.get_instance()
matching_keys = get_latest_keys(session_recipe.config, access_token_obj.kid)
Copy link
Collaborator

Choose a reason for hiding this comment

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

this goes through caching right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

yes it does

sattvikc and others added 13 commits December 30, 2024 14:25
* fix: cdi and fdi versions

* fix: deps

* fix: sdk version

* fix: tests

* fix: website reset

* fix: website tests

* fix: test scripts for oauth2

* fix: website tests

* fix: unit test

* fix: unit test

* fix: django headers

* fix: better types

* fix: review comments

* fix: test server
@sattvikc sattvikc changed the base branch from 0.26 to 0.27 December 30, 2024 11:54
@sattvikc sattvikc merged commit 8f794c0 into 0.27 Dec 30, 2024
15 of 17 checks passed
@sattvikc sattvikc deleted the feat/oauth-provider branch December 30, 2024 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants