python – 限制仪表板用户Django-Oscar(沙盒网关应用程序)

python – 限制仪表板用户Django-Oscar(沙盒网关应用程序),第1张

概述如何限制仪表板用户?我已经安装了沙盒网站附带的网关应用程序,但据我所知,用户只是自动批准用于仪表板访问.显然这是一个安全问题.我已经阻止未经过身份验证的用户查看网站的部分内容,但我需要能够限制/批准对信息中心的访问权限. 我看到它的方式,我将不得不编写一个自定义视图/表单,以便能够从仪表板执行此 *** 作,并具有待处理的帐户注册源. 任何指针将不胜感激. 相关代码: import loggingfr 如何限制仪表板用户?我已经安装了沙盒网站附带的网关应用程序,但据我所知,用户只是自动批准用于仪表板访问.显然这是一个安全问题.我已经阻止未经过身份验证的用户查看网站的部分内容,但我需要能够限制/批准对信息中心的访问权限.

我看到它的方式,我将不得不编写一个自定义视图/表单,以便能够从仪表板执行此 *** 作,并具有待处理的帐户注册源.

任何指针将不胜感激.

相关代码:

import loggingfrom django.vIEws import genericfrom django.contrib.auth.models import Userfrom django.contrib import messagesfrom django.core.mail import send_mailfrom django import httpfrom django.core.urlresolvers import reversefrom django.template.loader import get_templatefrom django.template import Contextfrom apps.gateway import formsfrom oscar.apps.customer.forms import generate_usernamelogger = logging.getLogger('gateway')class GatewayVIEw(generic.FormVIEw):    template_name = 'gateway/form.HTML'    form_class = forms.GatewayForm    def form_valID(self,form):        real_email = form.cleaned_data['email']        username = generate_username()        password = generate_username()        email = 'dashboard-user-%[email protected]' % username        user = self.create_dashboard_user(username,email,password)        self.send_confirmation_email(real_email,user,password)        logger.info("Created dashboard user #%d for %s",user.ID,real_email)        messages.success(            self.request,"The credentials for a dashboard user have been sent to %s" % real_email)        return http.httpResponseRedirect(reverse('gateway'))    def create_dashboard_user(self,username,password):        user = User.objects.create_user(username,password)        user.is_staff = True        user.save()        return user    def send_confirmation_email(self,real_email,password):        msg = get_template('gateway/email.txt').render(Context({            'email': user.email,'password': password        }))        send_mail('Dashboard access to Oscar sandBox',msg,'[email protected]',[real_email])

https://github.com/django-oscar/django-oscar/blob/master/sites/sandbox/apps/gateway/views.py
只要电子邮件有效,这只会自动创建一个is_staff用户.

解决方法 所以我最终使用的解决方案是限制对超级用户的网关访问.由于应用程序已经使用了

django.contrib.auth.mIDdleware.AuthenticationMIDdleware

它可以访问用户模型.
我在网关电子邮件请求模板form.HTML中放置了一个if块:

{% if user.is_authenticated %}    {% if user.is_superuser %}    <email form>    {% else %}    <insufficIEnt user privileges partial template>    {% endif %}    <not logged in partial template> {% endif %}

同样对于零售访问,我用过

{% if user.is_authenticated %}    {% if user.is_staff%}    <email form>    {% else %}    <insufficIEnt user privileges partial template>    {% endif %}    <not logged in partial template> {% endif %}

这样,只有超级用户才能创建员工,工作人员和超级用户都可以创建零售帐户.

总结

以上是内存溢出为你收集整理的python – 限制仪表板用户Django-Oscar(沙盒网关应用程序)全部内容,希望文章能够帮你解决python – 限制仪表板用户Django-Oscar(沙盒网关应用程序)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1197456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存