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))
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))