Example #1
0
    def post(self):

        username = self.get_argument('username', '')
        password = self.get_argument('password', '')
        repassword = self.get_argument('repassword', '')
        email = self.get_argument('email', '')

        error_msg = list()
        if '' == username:
            error_msg.append("请输入用户名")
        if '' == password:
            error_msg.append("请输入密码")
        if '' == repassword:
            error_msg.append("请确认密码")
        if '' == email:
            error_msg.append("请输入邮箱地址")
        if password != repassword:
            error_msg.append("两次输入的密码不一直,请重新输入")

        if error_msg:
            self.render('member/register.html', msg=error_msg)
            return

        authcode = common.randString(64, True)

        pwd_md5 = self.md5
        pwd_md5.update(password)
        pwd_md5.update(authcode)
        password = pwd_md5.hexdigest()

        isexists = self.db.User.select(self.db.User.id).where(
            (self.db.User.name == username) |
            (self.db.User.mail == email)
        ).count()

        if isexists > 0:
            error_msg = list()
            error_msg.append('您输入的用户名或密码已经被注册了,请重新填写。')
            self.render('member/register.html', msg=error_msg)
            return

        self.db.User.create(
            name=username,
            password=password,
            mail=email,
            created=int(time.time()),
            authCode=authcode
        )

        self.render('member/register_success.html', email=email)
Example #2
0
    def post(self):
        email = self.get_argument('email', '')

        error_msg = list()
        if '' == email:
            error_msg.append("请输入邮箱地址")

        if error_msg:
            self.render('member/forget_pwd.html', msg=error_msg)
            return

        result = self.db.User.select().where(self.db.User.mail == email).count()
        if result:

            # 计算验证码
            code = common.randString(8)
            stime = str(int(time.time()))
            remoteip = self.request.remote_ip
            authstr = '{0}:{1}:{2}'.format(stime, remoteip, code)
            user = self.db.User.get(mail=email)
            user.authStr = authstr
            user.save()

            print user.authStr

            site_url = 'http://{0}'.format(self.request.host)
            reset_url = site_url + '/resetPwd/{0}/{1}'.format(user.id, code)

            appname = self.db.Options.get(name='appName').value

            # 发送邮件
            mail_body = """
取回密码说明<br/>
<p>kimdash, 这封信是由 {0} 发送的。</p>

<p>您收到这封邮件,是由于这个邮箱地址在 {0} 被登记为用户邮箱, 且该用户请求使用 Email 密码重置功能所致。</p>

----------------------------------------------------------------------
<p><strong>重要!</strong></p>
----------------------------------------------------------------------

<p>如果您没有提交密码重置的请求或不是 {0} 的注册用户,请立即忽略 并删除这封邮件。只有在您确认需要重置密码的情况下,才需要继续阅读下面的内容。</p>

----------------------------------------------------------------------
<p><strong>密码重置说明</strong></p>
----------------------------------------------------------------------

<p>您只需在提交请求后的三天内,通过点击下面的链接重置您的密码:</p>
{1}<br/>
(如果上面不是链接形式,请将该地址手工粘贴到浏览器地址栏再访问)<br/>

<p>在上面的链接所打开的页面中输入新的密码后提交,您即可使用新的密码登录网站了。您可以在用户控制面板中随时修改您的密码。</p>

<p>本请求提交者的 IP 为 {2}</p>

此致<br/>
{0} 管理团队. {3}
            """
            mail_body = mail_body.format(appname, reset_url, remoteip, site_url)

            config = open('config.json', 'r').read()
            config = json.loads(config)
            smtp_config = config['smtp']
            mail = EmailBase(**smtp_config)
            mail.send(user.mail, '[{0}]取回密码说明'.format(appname), mail_body, mail_type='html')

            self.render('member/find_pwd.html', email=email)
        else:
            error_msg = list()
            error_msg.append('您输入的邮箱地址并没有在本站注册过噢。请确认输入是否有误。')
            self.render('member/forget_pwd.html', msg=error_msg)
            return