Esempio n. 1
0
def generate_access_tokens(request: WSGIRequest, user: User):
    # generate bearer token
    bearer_token = BearerToken(OAuth2Validator())
    request.scopes = ["read", "write"]
    request.state = None
    request.extra_credentials = None
    request.grant_type = 'client_credentials'
    request.client = Application.objects.get(
        client_id=settings.SOCIAL_AUTH_CLIENT_ID,
        client_secret=settings.SOCIAL_AUTH_CLIENT_SECRET)
    token = bearer_token.create_token(request)

    # generate JWT
    issuer = settings.JWT_ISSUER
    payload_enricher = getattr(settings, 'JWT_PAYLOAD_ENRICHER', None)
    extra_data = {'username': user.username} if user else {}
    jwt_request = HttpRequest()
    jwt_request.POST = extra_data
    if payload_enricher:
        fn = import_string(payload_enricher)
        extra_data.update(fn(jwt_request))
    payload = generate_payload(issuer, token['expires_in'], **extra_data)
    token['access_token_jwt'] = encode_jwt(payload)

    return token