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

51 lines
1.5 KiB
Python

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import tornado.web
from tornado.escape import json_encode
from utils import encrypt
from handlers.admin import BaseHandler
from model.admin import Admin as User
class AdminLoginHandler(BaseHandler):
error_message = {
'110': '填写信息不完整',
'121': '该用户不存在',
'122': '密码错误'
}
def get(self):
self.render('admin/login.html', error=None, email='')
def post(self):
username = self.get_argument('username', '')
password = self.get_argument('password', '')
self.set_header("Content-Type", "application/json")
if not (username and password):
ret = {'error': 110, 'msg': self.error_message['110'], 'url': '/admin/index'}
return self.write(json_encode(ret))
user = User.get_by_username(username)
if not user:
ret = {'error': 121, 'msg': self.error_message['121']}
return self.write(json_encode(ret))
if user.get_password() != encrypt(password):
ret = {'error': 122, 'msg': self.error_message['122']}
return self.write(json_encode(ret))
self.set_secure_cookie("admin_user_id", str(user.user_id), expires_days=7)
ret = {'error': 0, 'msg': '登录成功', 'url': '/admin/index'}
return self.write(json_encode(ret))
class AdminLogoutHandler(tornado.web.RequestHandler):
def get(self):
self.clear_cookie('admin_user_id')
self.redirect('/admin/login')