|
@@ -20,8 +20,9 @@ from common.auth_user import *
|
|
|
from common import YzyApi, TassApi
|
|
|
from models import *
|
|
|
from urllib.parse import quote
|
|
|
-import requests
|
|
|
+from exceptions import *
|
|
|
import traceback
|
|
|
+from common.enc import mpfun
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
@@ -94,10 +95,7 @@ async def login(
|
|
|
redis_key = "kaptcha_" + uuid
|
|
|
redis_code = redis_get(redis_key)
|
|
|
if code is None or code != redis_code:
|
|
|
- return {
|
|
|
- "code": 500,
|
|
|
- "msg": "图片验证码不正确",
|
|
|
- }
|
|
|
+ raise AppException(500, "图片验证码不正确")
|
|
|
|
|
|
redis_login_key = "login_user_" + username
|
|
|
login_error_times = redis_get(redis_login_key)
|
|
@@ -106,11 +104,11 @@ async def login(
|
|
|
else:
|
|
|
login_error_times = int(login_error_times)
|
|
|
|
|
|
- if login_error_times >= 5:
|
|
|
- return {
|
|
|
- "code": 500,
|
|
|
- "msg": "登录错误多,请5分钟后再尝试!",
|
|
|
- }
|
|
|
+ if login_error_times >= 50:
|
|
|
+ raise AppException(500, "登录错误多,请5分钟后再尝试!")
|
|
|
+
|
|
|
+ # 对用户账号进行密码机接口加密处理
|
|
|
+ username = mpfun.enc_data(username)
|
|
|
|
|
|
password = ase_utils.aesDecrypt(uuid_str, password)
|
|
|
logger.info('userpass: {}', password)
|
|
@@ -120,62 +118,42 @@ async def login(
|
|
|
if row is None:
|
|
|
login_error_times = login_error_times + 1
|
|
|
redis_set_with_time(redis_login_key, str(login_error_times), 300)
|
|
|
- return JSONResponse(status_code=404, content={"code": 404, "msg": "帐号或者密码错误"})
|
|
|
- # return {
|
|
|
- # "error": 1,
|
|
|
- # "errmsg": "帐号或者密码错误",
|
|
|
- # }
|
|
|
-
|
|
|
- logger.info('row.password: {}', row.password)
|
|
|
- if verify_password(password, row.password) == False:
|
|
|
- login_error_times = login_error_times + 1
|
|
|
- redis_set_with_time(redis_login_key, str(login_error_times), 300)
|
|
|
-
|
|
|
- return JSONResponse(status_code=404, content={"code":404,"msg":"帐号或者密码错误"})
|
|
|
-
|
|
|
- '''
|
|
|
- m = hashlib.md5()
|
|
|
- m.update(userpass.encode('utf-8'))
|
|
|
- password_md5 = m.hexdigest()
|
|
|
|
|
|
- password_db = row.password
|
|
|
+ raise AppException(500, "帐号或者密码错误")
|
|
|
|
|
|
- if password_md5 != password_db:
|
|
|
+ logger.info('row.password: {}', row.password)
|
|
|
+
|
|
|
+ # bcrypt 加密校验
|
|
|
+ # if verify_password(password, row.password) == False:
|
|
|
+
|
|
|
+ # 密码机加密校验
|
|
|
+ if mpfun.enc_data(password) != row.password:
|
|
|
login_error_times = login_error_times + 1
|
|
|
redis_set_with_time(redis_login_key, str(login_error_times), 300)
|
|
|
|
|
|
- return {
|
|
|
- "error": 1,
|
|
|
- "errmsg": "帐号或者密码错误",
|
|
|
- }
|
|
|
+ raise AppException(500, "帐号或者密码错误")
|
|
|
|
|
|
# 校验长期(超过1个月)未使用的账号和及开通后未及时(如72小时)修改初始密码的账号做清除
|
|
|
- last_login_time = datetime.fromtimestamp(row.last_login_time)
|
|
|
+ login_date = row.login_date
|
|
|
if row.login == 0:
|
|
|
# 计算初始化的时间和当前时间相差的小时数
|
|
|
- diff_hour = (datetime.now() - last_login_time).seconds/3600
|
|
|
+ diff_hour = (datetime.now() - login_date).seconds/3600
|
|
|
if diff_hour > 72:
|
|
|
- return {
|
|
|
- "error": 1,
|
|
|
- "errmsg": "你的账号在开通后(72小时)内未登录及修改初始密码,账号已被锁定,请联系管理员处理,否则将被清除。",
|
|
|
- }
|
|
|
+ raise AppException(500, "你的账号在开通后(72小时)内未登录及修改初始密码,账号已被锁定,请联系管理员处理,否则将被清除。")
|
|
|
+
|
|
|
else:
|
|
|
# 计算上次登录到当前时间的相差天数
|
|
|
- diff_day = (datetime.now() - last_login_time).days
|
|
|
+ diff_day = (datetime.now() - login_date).days
|
|
|
if diff_day > 30:
|
|
|
- return {
|
|
|
- "error": 1,
|
|
|
- "errmsg": "你的账号在超过30天未登录使用,账号已被锁定,请联系管理员处理,否则将被清除。",
|
|
|
- }
|
|
|
+ raise AppException(500, "你的账号在超过30天未登录使用,账号已被锁定,请联系管理员处理,否则将被清除。")
|
|
|
|
|
|
redis_set_with_time(redis_login_key, str(0), 1)
|
|
|
|
|
|
- '''
|
|
|
user_id = str(row.user_id)
|
|
|
|
|
|
auth = {
|
|
|
"user_id": user_id,
|
|
|
- "user_name": row.user_name,
|
|
|
+ "user_name": mpfun.dec_data(row.user_name),
|
|
|
"nick_name": row.nick_name,
|
|
|
"is_yzy_user": "0"
|
|
|
}
|
|
@@ -187,7 +165,6 @@ async def login(
|
|
|
# db_czrz_serv.log_username(db, row.uid, row.username, "登录", "后台管理账号+密码登录成功", request.client.host)
|
|
|
row.login_date = datetime.now()
|
|
|
row.login_ip = request.client.host
|
|
|
- # row.login = row.login + 1
|
|
|
db.commit()
|
|
|
|
|
|
access_token_expires = timedelta(days = 5)
|
|
@@ -195,7 +172,7 @@ async def login(
|
|
|
data={"sub": user_id}, expires_delta = access_token_expires
|
|
|
)
|
|
|
|
|
|
- refresh_token_expires = timedelta(days = 5)
|
|
|
+ refresh_token_expires = timedelta(days = 10)
|
|
|
refresh_token = security.create_access_token(
|
|
|
data={"sub": user_id}, expires_delta = refresh_token_expires
|
|
|
)
|
|
@@ -213,6 +190,12 @@ async def login(
|
|
|
"openid": ""
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ except AppException as e:
|
|
|
+ return {
|
|
|
+ "code": e.code,
|
|
|
+ "msg": e.msg
|
|
|
+ }
|
|
|
|
|
|
except Exception as e:
|
|
|
traceback.print_exc()
|