Example #1
0
        def _wrapper(request, *args, **kwargs):

            # user is logged in
            if request.user.is_authenticated:
                return _view(request, *args, **kwargs)

            # multi user mode, log user in using oauth
            else:
                flow = CredentialsFlowWrapper(settings.UI_CLIENT,
                                              redirect_uri=settings.CONST_URL +
                                              '/oauth_callback/')
                auth_url, _ = flow.authorization_url(
                    prompt='',
                    access_type='offline',
                    include_granted_scopes='true')
                request.session['code_verifier'] = flow.code_verifier
                return HttpResponseRedirect(auth_url)
Example #2
0
def oauth_callback(request):

    # get the credentials from the Google redirect
    flow = CredentialsFlowWrapper(settings.UI_CLIENT,
                                  redirect_uri=settings.CONST_URL +
                                  '/oauth_callback/')
    flow.code_verifier = request.session.get('code_verifier')
    flow.fetch_token(code=request.GET['code'])

    # get or create the account
    account = Account.objects.get_or_create_user(flow.credentials)

    # log the account in ( set cookie )
    django_login(request, account, backend=settings.AUTHENTICATION_BACKENDS[0])

    messages.success(request, 'Welcome To StarThinker')

    return HttpResponseRedirect('/')
Example #3
0
def oauth_callback(request):

  # get the credentials from the Google redirect
  flow = CredentialsFlowWrapper(settings.UI_CLIENT, redirect_uri=settings.CONST_URL + '/oauth_callback/')
  flow.code_verifier = request.session.get('code_verifier')
  flow.fetch_token(code=request.GET['code'])

  # pull user information for account lookup or creation
  service = discovery.build('oauth2', 'v2', credentials=flow.credentials)
  profile = service.userinfo().get().execute()

  # get or create the account
  account = Account.objects.get_or_create_user(profile, flow.credentials)
  #authenticate(username = username, password = password)

  # log the account in ( set cookie )
  django_login(request, account, backend=settings.AUTHENTICATION_BACKENDS[0])

  messages.success(request, 'Welcome To StarThinker')

  return HttpResponseRedirect('/')
Example #4
0
        def _wrapper(request, *args, **kwargs):

            # user is logged in
            if request.user.is_authenticated:
                return _view(request, *args, **kwargs)

            # multi user mode, log user in using oauth
            elif settings.UI_CLIENT:
                flow = CredentialsFlowWrapper(settings.UI_CLIENT,
                                              redirect_uri=settings.CONST_URL +
                                              '/oauth_callback/')
                auth_url, _ = flow.authorization_url(
                    prompt='consent',
                    #approval_prompt='auto',
                    access_type='offline',
                    include_granted_scopes='true')
                request.session['code_verifier'] = flow.code_verifier
                return HttpResponseRedirect(auth_url)

            # single user mode, no oath, use native django user management ( intead of gsuite )
            else:
                return HttpResponseRedirect('/login/')
Example #5
0
def get_client_type(credentials):
    client_json = CredentialsFlowWrapper(credentials, credentials_only=True)
    return next(iter(client_json.keys()))