示例#1
0
    def get(self, request, *args, **kwargs):
        addon_name = kwargs['addon_name']

        # Session
        if not request.session.session_key:
            request.session.create()
        session_key = request.session.session_key

        try:
            session = self.get_session(addon_name)
            institution_id = session.data['oauth_states'][addon_name]['institution_id']

            flask_ctx = self.get_request_context(session_key, institution_id, addon_name)
            flask_ctx.request.args = ImmutableMultiDict(dict(self.request.GET.iterlists()))
            provider = get_service(addon_name)

            rdm_addon_option = get_rdm_addon_option(institution_id, addon_name)
            # Retrieve permanent credentials from provider
            auth_callback_result = provider.auth_callback(user=rdm_addon_option)
            if auth_callback_result:
                if provider.account and not rdm_addon_option.external_accounts.filter(id=provider.account.id).exists():
                    rdm_addon_option.external_accounts.add(provider.account)
                    rdm_addon_option.save()
        finally:
            try:
                flask_ctx.pop()
            except IndexError:
                pass

        return HttpResponse('OK')
示例#2
0
def oauth_callback(service_name, auth):
    user = auth.user
    provider = get_service(service_name)

    # Retrieve permanent credentials from provider
    provider.auth_callback(user=user)

    if provider.account not in user.external_accounts:
        user.external_accounts.append(provider.account)
        user.save()

    return {}
示例#3
0
def oauth_callback(service_name, auth):
    user = auth.user
    provider = get_service(service_name)

    # Retrieve permanent credentials from provider
    provider.auth_callback(user=user)

    if provider.account not in user.external_accounts:
        user.external_accounts.append(provider.account)
        user.save()

    return {}
示例#4
0
def oauth_callback(service_name, auth):
    user = auth.user
    provider = get_service(service_name)

    # Retrieve permanent credentials from provider
    if not provider.auth_callback(user=user):
        return {}

    if provider.account and not user.external_accounts.filter(id=provider.account.id).exists():
        user.external_accounts.add(provider.account)
        user.save()

    oauth_complete.send(provider, account=provider.account, user=user)

    return {}
示例#5
0
def weko_oauth_callback(repoid, auth):
    user = auth.user
    provider = get_service(SHORT_NAME)

    # Retrieve permanent credentials from provider
    if not provider.repo_auth_callback(user=user, repoid=repoid):
        return {}

    if provider.account and not user.external_accounts.filter(
            id=provider.account.id).exists():
        user.external_accounts.add(provider.account)
        user.save()

    oauth_complete.send(provider, account=provider.account, user=user)

    return {}
示例#6
0
    def get(self, request, *args, **kwargs):
        addon_name = kwargs['addon_name']
        institution_id = int(kwargs['institution_id'])

        # Session
        if not request.session.session_key:
            request.session.create()
        session_key = request.session.session_key

        flask_ctx = self.get_request_context(session_key, institution_id, addon_name)
        flask_ctx.push()
        provider = get_service(addon_name)

        auth_url = provider.auth_url
        session = self.get_session(addon_name)
        session.data['oauth_states'][addon_name]['institution_id'] = institution_id
        session.save()

        return redirect(auth_url)
示例#7
0
def oauth_connect(service_name, auth):
    service = get_service(service_name)

    return redirect(service.auth_url)
示例#8
0
def weko_oauth_connect(repoid, auth):
    service = get_service(SHORT_NAME)
    return redirect(service.get_repo_auth_url(repoid))