def create_oauth2_client(user): """ Create an OAuth2 client associated with the given user and generate an access token for said client. :param user: :return: a Client (provider.oauth2) and an AccessToken """ # Register an OAuth2 Client client = OAuth2Client( user=user, name=user.username, url="http://127.0.0.1/", redirect_uri="http://127.0.0.1/", client_type=constants.CONFIDENTIAL ) client.save() # Generate an access token for the client access_token = AccessToken( user=user, client=client, # Set the access token to expire one day from now expires=timezone.now() + timedelta(1, 0), scope=constants.READ_WRITE ) access_token.save() return client, access_token
def get_id_token(user): """ Generates JWT ID-Token, using or creating user's OAuth access token. """ try: client = Client.objects.get(name="edx-notes") except Client.DoesNotExist: raise ImproperlyConfigured( "OAuth2 Client with name 'edx-notes' is not present in the DB") try: access_token = AccessToken.objects.get(client=client, user=user, expires__gt=now()) except AccessToken.DoesNotExist: access_token = AccessToken(client=client, user=user) access_token.save() id_token = oidc.id_token(access_token) secret = id_token.access_token.client.client_secret return id_token.encode(secret)
def create_token(user, client): token = AccessToken(client=client, user=user) token.save() return token