예제 #1
0
 def _wrapped_view(request, *args, **kwargs):
     LOGGER.debug("Enters djaoapp.decorators.requires_authenticated")
     redirect_url = fail_authenticated(request)
     if redirect_url:
         verification_key = kwargs.get('verification_key', None)
         if verification_key:
             contact = Contact.objects.filter(
                 verification_key=verification_key).first()
             if not contact:
                 # Not a `Contact`, let's try `Role`.
                 role_model = get_role_model()
                 try:
                     role = role_model.objects.filter(
                         Q(grant_key=verification_key)
                         | Q(request_key=verification_key)).get()
                     contact, _ = Contact.objects.update_or_create_token(
                         role.user)
                     verification_key = contact.verification_key
                 except role_model.DoesNotExist:
                     pass
             if contact and has_invalid_password(contact.user):
                 redirect_url = request.build_absolute_uri(
                     reverse('registration_activate',
                             args=(verification_key, )))
         return redirect_or_denied(
             request,
             redirect_url,
             redirect_field_name=redirect_field_name)
     return view_func(request, *args, **kwargs)
예제 #2
0
        def _wrapped_view(request, *args, **kwargs):
            LOGGER.debug("Enters djaoapp.decorators.requires_self_provider")
            site = get_current_site()
            if site.db_name:
                # We have a separate database so it is OK for a manager
                # of the site to access profiles of ``User`` which
                # are not subscribed yet.
                if _has_valid_access(request, [get_current_broker()],
                                     strength):
                    return view_func(request, *args, **kwargs)
            try:
                app = get_current_app()
                #pylint:disable=unused-variable
                redirect_url, matched, session = check_matched(
                    request, app, prefixes=DEFAULT_PREFIXES)
                if redirect_url:
                    if isinstance(redirect_url, six.string_types):
                        return http.HttpResponseRedirect(redirect_url)
                    raise PermissionDenied()
            except NoRuleMatch:
                redirect_url = _fail_self_provider(request,
                                                   user=kwargs.get(
                                                       'user', None),
                                                   strength=strength)
                if redirect_url:
                    return redirect_or_denied(request, redirect_url,
                        redirect_field_name=redirect_field_name,
                        descr=_("%(auth)s has neither a direct"\
" relation to an organization connected to %(user)s nor a connection to one"\
" of the providers to such organization.") % {
                    'auth': request.user, 'user': kwargs.get('user', None)})
            return view_func(request, *args, **kwargs)
예제 #3
0
        def _wrapped_view(request, *args, **kwargs):
            LOGGER.debug("Enters djaoapp.decorators.requires_provider_only")
            site = get_current_site()
            organization = kwargs.get('organization', None)
            if site.db_name:
                # We have a separate database so it is OK for a manager
                # of the site to access registered ``Organization`` which
                # are not subscribed yet.
                if _has_valid_access(request, [get_current_broker()],
                                     strength):
                    return view_func(request, *args, **kwargs)
            try:
                app = get_current_app()
                #pylint:disable=unused-variable
                redirect_url, matched, session = check_matched(
                    request, app, prefixes=DEFAULT_PREFIXES)
                if redirect_url:
                    if isinstance(redirect_url, six.string_types):
                        return http.HttpResponseRedirect(redirect_url)
                    raise PermissionDenied()
            except NoRuleMatch:
                # By default, we are looking for provider.
                slug = kwargs.get('charge', organization)
                redirect_url = _fail_provider_only(
                    request,
                    organization=slug,
                    roledescription=roledescription,
                    strength=strength)
                if redirect_url:
                    return redirect_or_denied(request, redirect_url,
                        redirect_field_name=redirect_field_name,
                        descr=_("%(auth)s is not a manager of one of"\
" %(organization)s providers.") % {'auth': request.user, 'organization': slug})
            return view_func(request, *args, **kwargs)
예제 #4
0
        def _wrapped_view(request, *args, **kwargs):
            try:
                app = get_current_app()
                redirect_url, _, _ = check_matched(
                    request,
                    app,
                    prefixes=[
                        '/api/billing/', '/api/metrics/', '/api/profile/',
                        '/api/users/', '/billing/', '/metrics/', '/profile/',
                        '/users/'
                    ])
                if redirect_url:
                    if isinstance(redirect_url, six.string_types):
                        return http.HttpResponseRedirect(redirect_url)
                    raise PermissionDenied()
            except NoRuleMatch:
                slug = kwargs.get('charge', kwargs.get('organization', None))
                redirect_url = _fail_direct(request,
                                            organization=slug,
                                            roledescription=roledescription,
                                            strength=strength)
                if redirect_url:
                    return redirect_or_denied(
                        request,
                        redirect_url,
                        redirect_field_name=redirect_field_name,
                        descr="%(user)s is not a direct manager '\
    ' of %(organization)s." % {
                            'user': request.user,
                            'organization': slug
                        })

            return view_func(request, *args, **kwargs)
예제 #5
0
        def _wrapped_view(request, *args, **kwargs):
            LOGGER.debug("Enters djaoapp.decorators.requires_direct")
            try:
                app = get_current_app()
                #pylint:disable=unused-variable
                redirect_url, matched, session = check_matched(request, app,
                    prefixes=DEFAULT_PREFIXES)
                if redirect_url:
                    if isinstance(redirect_url, six.string_types):
                        return http.HttpResponseRedirect(redirect_url)
                    raise PermissionDenied()
            except NoRuleMatch:
                slug = kwargs.get('charge', kwargs.get('organization', None))
                redirect_url = _fail_direct(request, organization=slug,
                        roledescription=roledescription, strength=strength)
                if redirect_url:
                    return redirect_or_denied(request, redirect_url,
                        redirect_field_name=redirect_field_name,
                        descr=_("%(auth)s is not a direct manager"\
    " of %(organization)s.") % {'auth': request.user, 'organization': slug})

            return view_func(request, *args, **kwargs)
예제 #6
0
        def _wrapped_view(request, *args, **kwargs):
            site = get_current_site()
            organization = kwargs.get('organization', None)
            if site.db_name:
                # We have a separate database so it is OK for a manager
                # of the site to access registered ``Organization`` which
                # are not subscribed yet.
                if _has_valid_access(request, [get_current_broker()],
                                     strength):
                    return view_func(request, *args, **kwargs)
            try:
                app = get_current_app()
                redirect_url, _, _ = check_matched(
                    request,
                    app,
                    prefixes=[
                        '/api/billing/', '/api/metrics/', '/api/profile/',
                        '/api/users/', '/billing/', '/metrics/', '/profile/',
                        '/users/'
                    ])
                if redirect_url:
                    if isinstance(redirect_url, six.string_types):
                        return http.HttpResponseRedirect(redirect_url)
                    raise PermissionDenied()
            except NoRuleMatch:
                # By default, we are looking for provider.
                slug = kwargs.get('charge', organization)
                redirect_url = _fail_provider_only(
                    request,
                    organization=slug,
                    roledescription=roledescription,
                    strength=strength)
                if redirect_url:
                    return redirect_or_denied(request, redirect_url,
                        "%(user)s is not a manager of one of"\
" %(slug)s providers." % {'user': request.user, 'slug': slug})
            return view_func(request, *args, **kwargs)