def handle(self, *args, **options):

        force_exec = options.get('force_exec')
        target_address = options.get('target_address')

        client_id = None
        client_secret = None

        if check_ogc_backend(geoserver.BACKEND_PACKAGE):
            from geonode.geoserver.helpers import ogc_server_settings
            redirect_uris = f'{ogc_server_settings.LOCATION}\n{ogc_server_settings.public_url}\n{target_address}/geoserver/'  # noqa
            if Application.objects.filter(name='GeoServer').exists():
                Application.objects.filter(name='GeoServer').update(redirect_uris=redirect_uris)
                if force_exec:
                    Application.objects.filter(name='GeoServer').update(
                        client_id=generate_client_id(),
                        client_secret=generate_client_secret()
                    )
                app = Application.objects.filter(name='GeoServer')[0]
                client_id = app.client_id
                client_secret = app.client_secret
            else:
                client_id = generate_client_id()
                client_secret = generate_client_secret()
                Application.objects.create(
                    skip_authorization=True,
                    redirect_uris=redirect_uris,
                    name='GeoServer',
                    authorization_grant_type='authorization-code',
                    client_type='confidential',
                    client_id=client_id,
                    client_secret=client_secret,
                    user=get_user_model().objects.filter(is_superuser=True)[0]
                )
        return f'{client_id},{client_secret}'
Example #2
0
 def handle(self, *args, **options):
     from django.conf import settings
     client_id = None
     client_secret = None
     if check_ogc_backend(geoserver.BACKEND_PACKAGE):
         from geonode.geoserver.helpers import ogc_server_settings
         redirect_uris = '%s\n%s' % (ogc_server_settings.LOCATION, ogc_server_settings.public_url)
         if Application.objects.filter(name='GeoServer').exists():
             Application.objects.filter(name='GeoServer').update(redirect_uris=redirect_uris)
             app = Application.objects.filter(name='GeoServer')[0]
             client_id = app.client_id
             client_secret = app.client_secret
         else:
             client_id = generate_client_id()
             client_secret = generate_client_secret()
             Application.objects.create(
                 skip_authorization=True,
                 redirect_uris=redirect_uris,
                 name='GeoServer',
                 authorization_grant_type='authorization-code',
                 client_type='confidential',
                 client_id=client_id,
                 client_secret=client_secret,
                 user=Profile.objects.filter(is_superuser=True)[0]
             )
     return '%s,%s' % (client_id, client_secret)
def update(request, user_app_id):
    """Update record"""

    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    try:
        item = get_application_model().objects.get(pk=user_app_id)
    except get_application_model().DoesNotExist:
        return {'code': 'user_app/not_found', 'values': [user_app_id]}, 404, False

    data['client_type'] = AbstractApplication.CLIENT_CONFIDENTIAL
    data['authorization_grant_type'] = AbstractApplication.GRANT_PASSWORD
    data['skip_authorization'] = True
    data['client_id'] = generate_client_id()
    data['client_secret'] = generate_client_secret()

    helpers.json_to_objects(item, data)
    item.user = user
    item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
 def handle(self, *args, **options):
     from django.conf import settings
     client_id = None
     client_secret = None
     if 'geonode.geoserver' in settings.INSTALLED_APPS:
         from geonode.geoserver.helpers import ogc_server_settings
         if Application.objects.filter(name='GeoServer').exists():
             Application.objects.filter(name='GeoServer').update(
                 redirect_uris=ogc_server_settings.public_url)
             app = Application.objects.filter(name='GeoServer')[0]
             client_id = app.client_id
             client_secret = app.client_secret
         else:
             client_id = generate_client_id()
             client_secret = generate_client_secret()
             Application.objects.create(
                 skip_authorization=True,
                 redirect_uris=ogc_server_settings.public_url,
                 name='GeoServer',
                 authorization_grant_type='authorization-code',
                 client_type='confidential',
                 client_id=client_id,
                 client_secret=client_secret,
                 user=Profile.objects.filter(is_superuser=True)[0])
     return '%s,%s' % (client_id, client_secret)
 def update(self, instance, validated_data):
     instance.redirect_uris = validated_data.get('redirect_uris',
                                                 instance.redirect_uris)
     instance.name = validated_data.get('name', instance.name)
     instance.web_hook = validated_data.get('web_hook', instance.web_hook)
     if validated_data.get('reset_credentials', False) is True:
         instance.client_id = generate_client_id()
         instance.client_secret = generate_client_secret()
     instance.save()
     return instance
 def handle(self, *args, **options):
     new_application = Application(
         user=User.objects.filter(is_superuser=True)[0],
         client_type="confidential",
         authorization_grant_type="password",
         name=options["name"] or "socialauth_application",
         client_id=options["client_id"] or generate_client_id(),
         client_secret=options["client_secret"] or generate_client_secret(),
     )
     new_application.save()
Example #7
0
def add_application(username, application_name):
    user = User.objects.get(username=username)
    if not user:
        return
    application = MyApplication(name=application_name,
                                client_id=generate_client_id(),
                                client_secret=generate_client_secret(),
                                client_type="confidential",
                                authorization_grant_type="password",
                                user=user)
    application.save()
Example #8
0
 def get_form(self, form_class=None):
     form = super(ApiRequestStatusView, self).get_form(form_class)
     # Copy the data, since it's an immutable QueryDict.
     copied_data = form.data.copy()
     # Now set the fields that were removed earlier. We give them
     # confidential client credentials, and generate their client
     # ID and secret.
     copied_data.update({
         'authorization_grant_type': Application.GRANT_CLIENT_CREDENTIALS,
         'client_type': Application.CLIENT_CONFIDENTIAL,
         'client_secret': generate_client_secret(),
         'client_id': generate_client_id(),
     })
     form.data = copied_data
     return form
Example #9
0
 def get_form(self, form_class=None):
     form = super(ApiRequestStatusView, self).get_form(form_class)
     # Copy the data, since it's an immutable QueryDict.
     copied_data = form.data.copy()
     # Now set the fields that were removed earlier. We give them
     # confidential client credentials, and generate their client
     # ID and secret.
     copied_data.update({
         'authorization_grant_type': Application.GRANT_CLIENT_CREDENTIALS,
         'client_type': Application.CLIENT_CONFIDENTIAL,
         'client_secret': generate_client_secret(),
         'client_id': generate_client_id(),
     })
     form.data = copied_data
     return form
def Application_Update_Secret(request, pk):
    """
    Replace client_id and client_secret

    :param request:
    :param pk:
    :return:
    """
    if request.method == 'POST':
        a = BBApplication.objects.get(pk=pk)
        form = Application_Secret(request.POST)

        if form.is_valid():
            if form.cleaned_data['confirm'] == '1':
                a.client_id = generate_client_id()
                a.client_secret = generate_client_secret()
                a.save()
                messages.success(request, "Client Id and Secret updated")

            if settings.DEBUG:
                print("Confirm:", form.cleaned_data['confirm'])
                print("Id:", a.client_id)
                print("Secret:", a.client_secret)

            return HttpResponseRedirect(
                reverse_lazy('appmgmt:manage_applications'))

        else:
            if settings.DEBUG:
                print("form has a problem")
    else:
        a = BBApplication.objects.get(pk=pk)
        if settings.DEBUG:
            print("BBApplication:", a)

        form = Application_Secret(initial={'confirm': '0'})
    return render_to_response(
        'appmgmt/application_secret_form.html',
        RequestContext(request, {
            'form': form,
            'application': a,
        }))
Example #11
0
def create_sentry_application(sentry_instance):
    if not sentry_instance:
        return
    name = sentry_instance["InstanceName"]
    client_id = generators.generate_client_id()
    client_secret = generators.generate_client_secret()
    authorization_grant_type = Application.GRANT_AUTHORIZATION_CODE
    client_type = Application.CLIENT_PUBLIC
    redirect_url = "http://%s/oauth/consumer/exchange/" % (sentry_instance["sentry_ipaddress"],)
    if not MyApplication.objects.filter(name=name):
        MyApplication.objects.create(
            name=name,
            client_id=client_id,
            client_secret=client_secret,
            authorization_grant_type=authorization_grant_type,
            client_type=client_type,
            redirect_uris=redirect_url,
            user_id=1,
        )
        return client_id, client_secret
Example #12
0
 def handle(self, *args, **options):
     name = ''.join(
         random.choices(string.ascii_uppercase + string.digits, k=8))
     client_id = generate_client_id()
     client_secret = generate_client_secret()
     client_type = 'public'
     authorization_grant_type = 'password'
     redirect_uris = ''
     skip_authorization = False
     # Save application
     application = get_application_model().objects.create(
         name=name,
         client_id=client_id,
         client_secret=client_secret,
         client_type=client_type,
         authorization_grant_type=authorization_grant_type,
         redirect_uris=redirect_uris,
         skip_authorization=skip_authorization)
     # Print application data
     print(json.dumps(model_to_dict(application), indent=4))
Example #13
0
def Application_Update_Secret(request, pk):
    """
    Replace client_id and client_secret

    :param request:
    :param pk:
    :return:
    """
    if request.method == "POST":
        a = BBApplication.objects.get(pk=pk)
        form = Application_Secret(request.POST)

        if form.is_valid():
            if form.cleaned_data["confirm"] == "1":
                a.client_id = generate_client_id()
                a.client_secret = generate_client_secret()
                a.save()
                messages.success(request, "Client Id and Secret updated")

            if settings.DEBUG:
                print("Confirm:", form.cleaned_data["confirm"])
                print("Id:", a.client_id)
                print("Secret:", a.client_secret)

            return HttpResponseRedirect(reverse_lazy("appmgmt:application_view"))

        else:
            if settings.DEBUG:
                print("form has a problem")
    else:
        a = BBApplication.objects.get(pk=pk)
        if settings.DEBUG:
            print("BBApplication:", a)

        form = Application_Secret(initial={"confirm": "0"})
    return render_to_response(
        "appmgmt/application_secret_form.html", RequestContext(request, {"form": form, "application": a})
    )
Example #14
0
    def save(self, commit=True):
        """Save the form.

        This method will generate the ``client_id`` and ``client_secret``
        fields.

        Args:
            commit (bool, optional):
                Whether or not the Application should be saved to the database.

        Returns:
            reviewboard.oauth.models.Application:
            The created Application.
        """
        instance = super(ApplicationCreationForm, self).save(commit=False)

        instance.client_id = generate_client_id()
        instance.client_secret = generate_client_secret()

        if commit:
            instance.save()

        return instance
Example #15
0
    def save(self, commit=True):
        """Save the form.

        This method will generate the ``client_id`` and ``client_secret``
        fields.

        Args:
            commit (bool, optional):
                Whether or not the Application should be saved to the database.

        Returns:
            reviewboard.oauth.models.Application:
            The created Application.
        """
        instance = super(ApplicationCreationForm, self).save(commit=False)

        instance.client_id = generate_client_id()
        instance.client_secret = generate_client_secret()

        if commit:
            instance.save()

        return instance
def Application_Update_Secret(request, pk):
    """
    Replace client_id and client_secret

    :param request:
    :param pk:
    :return:
    """
    if request.method == 'POST':
        a=BBApplication.objects.get(pk=pk)
        form = Application_Secret(request.POST)

        if form.is_valid():
            if form.cleaned_data['confirm'] == '1':
                a.client_id = generate_client_id()
                a.client_secret = generate_client_secret()
                a.save()
                messages.success(request,"Client Id and Secret updated")

            if settings.DEBUG:
                print("Confirm:", form.cleaned_data['confirm'])
                print("Id:", a.client_id)
                print("Secret:", a.client_secret)

            return HttpResponseRedirect(reverse_lazy('appmgmt:manage_applications'))

        else:
            if settings.DEBUG:
                print("form has a problem")
    else:
        a=BBApplication.objects.get(pk=pk)
        if settings.DEBUG:
            print("BBApplication:", a)

        form = Application_Secret(initial={'confirm': '0'})
    return render_to_response('appmgmt/application_secret_form.html',
                              RequestContext(request,{'form': form, 'application': a,}))
def create(request):
    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    data['client_type'] = AbstractApplication.CLIENT_CONFIDENTIAL
    data['authorization_grant_type'] = AbstractApplication.GRANT_PASSWORD
    data['skip_authorization'] = True
    data['client_id'] = generate_client_id()
    data['client_secret'] = generate_client_secret()

    item, created = get_application_model().objects.get_or_create(client_id=data['client_id'],
                                                                  user=user,
                                                                  redirect_uris=data['redirect_uris'],
                                                                  client_type=data['client_type'],
                                                                  authorization_grant_type=data[
                                                                      'authorization_grant_type'],
                                                                  client_secret=data['client_secret'],
                                                                  name=data['name'],
                                                                  skip_authorization=data['skip_authorization'])

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
    def test_generate_client_id(self):
        g = oauth2_settings.CLIENT_ID_GENERATOR_CLASS()
        self.assertEqual(len(g.hash()), 40)

        oauth2_settings.CLIENT_ID_GENERATOR_CLASS = MockHashGenerator
        self.assertEqual(generate_client_id(), 42)
 def create(self, validated_data):
     validated_data["client_id"] = generate_client_id()
     validated_data["client_secret"] = generate_client_secret()
     return SBApplication.objects.create(**validated_data)