示例#1
0
    def reset(self, request):
        """
		reset method of class admin
		"""
        if self.f_save_request != None:
            self.f_save_request(request)
        template = loader.get_template('tpl/reset.html')
        if request.method == "POST":
            form = email_login(request.POST)
            if form.is_valid():
                # Test if the mail address is a company mail address
                if "domain" in self.st.reg:
                    if str(form.cleaned_data["email"]).lower().find(
                            "@%s." % (self.st.reg["domain"])) < 0:
                        return rtway("HttpResponse", u"请输入正确的邮箱地址")
                mgclient = MongoClient()
                staffco = mgclient["foundation"].staff
                regmailco = mgclient["foundation"].regmail
                rand = randint(100000000, 999999999)  # create random number
                regmailco.update(
                    {
                        "mail": form.cleaned_data["email"],
                    },
                    {
                        "$set": {
                            "mail": form.cleaned_data["email"],
                            "password": form.cleaned_data["password"],
                            "time": utc8(),
                            "rand": rand,
                        }
                    },
                    upsert=True,
                )
                qspair = dict({
                    "mail": form.cleaned_data["email"],
                    "rit": rand,
                    "subfrom": "reset"
                })
                qstring = urlencode(qspair)
                http_host = request.META['HTTP_HOST']
                urlb = "http://" + str(
                    http_host
                ) + "/rabbithole?" + qstring  # Generate a query string
                mailcontext = dict({
                    "urlb": urlb,
                    "sitename": self.st.info["sitename"],
                    "siteadmin": self.st.info["siteadmin"]
                })
                mailtem = loader.get_template("tpl/mailconfirm.html")
                send_mail(
                    '%s邮箱验证' % (self.st.info["sitename"]),
                    urlb,
                    self.st.info["sitemail"],
                    [form.cleaned_data["email"]],
                    fail_silently=False,
                    html_message=mailtem.render(mailcontext, request),
                )
                msgtp = loader.get_template("tpl/msg.html")
                context = {
                    "msg_title":
                    u"邮件已发送",
                    "msg_head":
                    u"确认邮件已发送[您有15分钟]",
                    "msg_body":
                    u"确认邮件已发送至:<br>" + form.cleaned_data["email"] +
                    u"<br>请于十五分钟内访问邮件中的链接<br>找不到的话可以翻翻垃圾邮件:-)<br><br>务必注意,在点击邮箱中的确认链接时<strong>不要使用IE</strong><br><br><br>我要重新<a href='/register'>注册</a>",
                }
                return rtway("HttpResponse", msgtp.render(context, request))
        else:
            form = email_login()
            context = {
                "form": form,
            }
        return rtway("HttpResponse", template.render(context, request))
示例#2
0
    def login(self, request):
        """
		login method of class adm
		"""
        context = {}
        if self.f_save_request != None:
            self.f_save_request(request)
        try:
            if request.GET["logout"] == "1":
                request.session.flush()
        except:
            pass
        template = loader.get_template('tpl/login.html')
        if request.method == "POST":
            form = email_login(request.POST)
            if form.is_valid():
                db = get_db("foundation")
                if db.staff.find({
                        "mail": form.cleaned_data['email']
                }).count() == 0:
                    context.update({
                        "msg_return": u"邮箱或密码错误",
                    })
                else:
                    getusr = db.staff.find_one(
                        {"mail": form.cleaned_data['email']})
                    usertiers = get_tiers(form.cleaned_data['email'])
                    if getusr["password"] == mystrify(
                            form.cleaned_data['password']):  # Password matched
                        # Login successfully
                        request.session.set_expiry(
                            self.st.session["expire"]
                        )  # Expiring time of session: 15 days
                        request.session["onboard"] = True
                        request.session["mail"] = form.cleaned_data['email']
                        request.session["id"] = getusr['_id'].__str__()
                        request.session["tiers"] = usertiers
                        if "cnname" in getusr:
                            request.session['cnname'] = getusr['cnname']
                        else:
                            return rtway(
                                "redirect", "/userinfo"
                            )  # No CNName, goes to user setting page
                        if "ra" in dict(request.POST):
                            return rtway(
                                "redirect",
                                request.POST["ra"])  # Has return address
                        else:
                            return rtway(
                                "HttpResponseRedirect", "/"
                            )  # Doesn't have any return address, go to the root page
                    else:
                        context.update({
                            "msg_return": u"邮箱或密码错误",
                        })  # Password didn't match
        else:
            form = email_login()  #load the login form
            context.update({
                "form": form,
            })
        if request.method == "GET":
            get_dict = dict(request.GET)
            if "ra" in get_dict:  # Pass on the return address
                return_address = get_dict["ra"][0]
                context.update({"ra": return_address})
        return rtway("HttpResponse", template.render(context, request))