opsv2/handlers/home/login.py
2020-12-01 16:31:04 +08:00

113 lines
3.6 KiB
Python

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import re
import tornado.web
from utils import encrypt
#import libs.captcha
from model.user import User
from handlers.home import BaseHandler
class RegisterHandler(BaseHandler):
error_message = {
'110': '填写信息不完整',
'111': '用户名最多15个字符',
'112': '用户名已经被使用',
'113': 'Email不正确',
'114': 'Email已经被使用',
'115': '注册失败,请稍后再试'
}
def get(self):
self.render('home/register.html', error=None, username='', email='')
def post(self):
username = self.get_argument('username', '')
email = self.get_argument('email', '')
password = self.get_argument('password', '')
if not username or len(username) > 15:
self.render('home/register.html', error=111, username=username, email=email)
return
match = re.search(r'[\w.-]+@[\w.-]+', email)
if not match:
self.render('home/register.html', error=113, username=username, email=email)
return
if not password:
self.render('home/register.html', error=110, username=username, email=email)
return
user = User.get_by_username(username)
if user:
self.render('home/register.html', error=112, username=username, email=email)
return
user = User.get_by_email(email)
if user:
self.render('home/register.html', error=114, username=username, email=email)
return
#走代理获取ip方式
reg_ip = self.request.headers['X-Real-Ip']
user = User.new(username, email, password, reg_ip)
if user:
self.set_secure_cookie('user_id', str(user.user_id), expires_days=30)
self.redirect(self.get_argument('next', '/'))
else:
self.render('home/register.html', error=115)
class LoginHandler(BaseHandler):
error_message = {
'100': '信息填写不完整',
'101': '该用户不存在',
'102': '密码错误',
'103': '验证码错误'
}
def get(self):
self.render('home/login.html', error=None, email='')
def post(self):
email = self.get_argument('email', '')
password = self.get_argument('password', '')
if not (email and password):
self.render('home/login.html', error=100, email=email)
user = User.get_by_email(email)
if not user:
self.render('home/login.html', error=101, email=email)
if user.get_password() == encrypt(password):
last_login_ip = self.request.headers['X-Real-Ip']
user.update_login_info(last_login_ip)
self.set_secure_cookie("user_id", str(user.user_id), expires_days=7)
self.redirect(self.get_argument('next', '/'))
else:
self.render('home/login.html', error=102, email=email)
#
# #获取远程ip
# remote_ip = self.request.headers['X-Real-Ip']
# challenge = self.get_argument('recaptcha_challenge_field', None)
# response = self.get_argument('recaptcha_response_field', None)
# rsp = captcha.check_google_captcha(self,remote_ip, challenge, response)
# if not rsp.is_valid:
# self.render('home/login.html', error=103, email=email)
#
# self.render('home/login.html', error=100, email=email)
class LogoutHandler(tornado.web.RequestHandler):
def get(self):
self.clear_cookie('user_id')
self.redirect('/bye')
class ByeHandler(tornado.web.RequestHandler):
def get(self):
self.render('home/bye.html')