| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- from django.http import JsonResponse
- from utils.fbmsg import FBMsg
- from django.contrib import auth
- from django.contrib.auth.models import User
- import json
- from userprofile.models import Users
- from staff.models import ListModel as staff
- from operation_log.views import log_success_operation, log_failure_operation
- def login(request, *args, **kwargs):
- post_data = json.loads(request.body.decode())
- data = {
- "name": post_data.get('name'),
- "password": post_data.get('password'),
- }
- ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
- 'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
- if User.objects.filter(username=str(data['name'])).exists():
-
- user = auth.authenticate(username=str(data['name']), password=str(data['password']))
- if user is None:
- # 记录登录失败日志
- try:
- log_failure_operation(
- request=request,
- operation_content=f"用户登录失败:密码错误 - 用户名:{data['name']}",
- operation_level="login",
- operator=data.get('name'),
- module_name="用户登录"
- )
- except Exception:
- pass
-
- err_ret = FBMsg.err_ret()
- err_ret['data'] = data
- return JsonResponse(err_ret)
- else:
-
-
- staff_detail = staff.objects.filter(staff_name=str(data['name'])).first()
- if staff_detail.is_lock == 1:
- # 记录登录失败日志(账号被锁定)
- try:
- log_failure_operation(
- request=request,
- operation_content=f"用户登录失败:账号已被锁定 - 用户名:{data['name']}",
- operation_level="login",
- operator=data.get('name'),
- module_name="用户登录"
- )
- except Exception:
- pass
-
- err_ret = FBMsg.err_lock_staff()
- err_ret['data'] = data
- return JsonResponse(err_ret)
- else:
- data = {
- "name": data['name'],
- 'openid': staff_detail.openid,
- "user_id": staff_detail.id,
- "appid": staff_detail.appid,
- "staff_type" : staff_detail.staff_type,
- }
- ret = FBMsg.ret()
- ret['ip'] = ip
- ret['data'] = data
- auth.login(request, user)
-
- # 记录登录成功日志
- try:
- log_success_operation(
- request=request,
- operation_content=f"用户登录成功 - 用户名:{data['name']},角色:{staff_detail.staff_type}",
- operation_level="login",
- operator=data.get('name'),
- module_name="用户登录"
- )
- except Exception:
- pass
-
- return JsonResponse(ret)
-
- else:
- # 记录登录失败日志(用户不存在)
- try:
- log_failure_operation(
- request=request,
- operation_content=f"用户登录失败:用户不存在 - 用户名:{data['name']}",
- operation_level="login",
- operator=data.get('name'),
- module_name="用户登录"
- )
- except Exception:
- pass
-
- err_ret = FBMsg.err_ret()
- err_ret['ip'] = ip
- err_ret['data'] = data
- return JsonResponse(err_ret)
|