| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- from django.http import JsonResponse
- from userprofile.models import Users
- from utils.fbmsg import FBMsg
- from utils.md5 import Md5
- from django.views.decorators.csrf import csrf_exempt
- from django.utils.decorators import method_decorator
- from django.contrib import auth
- from django.utils import timezone
- from django.contrib.auth.models import User
- from staff.models import ListModel as staff
- import json, random, os
- from django.conf import settings
- from operation_log.views import log_success_operation, log_failure_operation
- @method_decorator(csrf_exempt, name='dispatch')
- # 免除视图类的dispatch方法的CSRF验证
- def register(request, *args, **kwargs):
- post_data = json.loads(request.body.decode())
- data = {
- "name": post_data.get('name'),
- "password1": post_data.get('password1'),
- "password2": post_data.get('password2')
- }
- ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
- 'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
- # 检查是否存在开发者用户且未被删除
- if Users.objects.filter(name=str(data['name']), developer=1, is_delete=0).exists():
- # 记录注册失败日志(用户名已存在)
- try:
- log_failure_operation(
- request=request,
- operation_content=f"用户注册失败:用户名已存在 - 用户名:{data['name']}",
- operation_level="login",
- operator=data.get('name'),
- module_name="用户注册"
- )
- except Exception:
- pass
-
- err_user_same = FBMsg.err_user_same()
- err_user_same['ip'] = ip
- err_user_same['data'] = data['name']
- return JsonResponse(err_user_same)
- else:
- if data.get('password1') is None:
- err_password1_empty = FBMsg.err_password1_empty()
- err_password1_empty['ip'] = ip
- err_password1_empty['data'] = data['name']
- return JsonResponse(err_password1_empty)
- else:
- if str(data['password1']) == '':
- err_password1_empty = FBMsg.err_password1_empty()
- err_password1_empty['ip'] = ip
- err_password1_empty['data'] = data['name']
- return JsonResponse(err_password1_empty)
- else:
- if data.get('password2') is None:
- err_password2_empty = FBMsg.err_password2_empty()
- err_password2_empty['ip'] = ip
- err_password2_empty['data'] = data['name']
- return JsonResponse(err_password2_empty)
- else:
- if str(data['password2']) == '':
- err_password2_empty = FBMsg.err_password2_empty()
- err_password2_empty['ip'] = ip
- err_password2_empty['data'] = data['name']
- return JsonResponse(err_password2_empty)
- else:
- if str(data['password1']) != str(data['password2']):
- err_password_not_same = FBMsg.err_password_not_same()
- err_password_not_same['ip'] = ip
- err_password_not_same['data'] = data['name']
- return JsonResponse(err_password_not_same)
- else:
- transaction_code = Md5.md5(data['name'])
-
- user = User.objects.create_user(username=str(data['name']), password=str(data['password1']))
- Users.objects.create(user_id=user.id, name=str(data['name']),
- openid=transaction_code, appid=transaction_code,
- t_code=Md5.md5(str(timezone.now())),
- developer=1, ip=ip)
- auth.login(request, user)
- check_code = random.randint(1000, 9999)
- staff.objects.create(staff_name=str(data['name']),
- staff_type='查看员',
- check_code=check_code,
- openid=transaction_code,
- appid=transaction_code,
- is_look=1,)
-
- # 记录注册成功日志
- try:
- log_success_operation(
- request=request,
- operation_content=f"用户注册成功 - 用户名:{data['name']},用户ID:{user.id}",
- operation_level="new",
- operator=data.get('name'),
- module_name="用户注册",
- object_id=str(user.id)
- )
- except Exception:
- pass
- if Users.objects.filter(name='PDA1', developer=1, is_delete=0).exists():
- print("PDA1已存在")
- else:
- staff.objects.create(staff_name='PDA1',
- staff_type='Inbound',
- check_code="123456",
- openid="PDA1",
- appid="PDA1",
- is_look=1,)
-
- User.objects.create_user(username='PDA1',password=str(123456))
- Users.objects.create(user_id=user.id, name='PDA1',
- openid="PDA1", appid="PDA1",
- t_code=Md5.md5(str(timezone.now())),
- developer=1, ip=ip)
-
- if Users.objects.filter(name='PDA2', developer=1, is_delete=0).exists():
- print("PDA2已存在")
- else:
- staff.objects.create(staff_name='PDA2',
- staff_type='Inbound',
- check_code="123456",
- openid="PDA2",
- appid="PDA2",
- is_look=1,)
- User.objects.create_user(username='PDA2',password=str(123456))
- Users.objects.create(user_id=user.id, name='PDA2',
- openid="PDA2", appid="PDA2",
- t_code=Md5.md5(str(timezone.now())),
- developer=1, ip=ip)
-
-
-
-
- user_id = staff.objects.filter(openid=transaction_code, staff_name=str(data['name']),
- staff_type='查看员', check_code=check_code).first().id
- folder = os.path.exists(os.path.join(settings.BASE_DIR, 'media/' + transaction_code))
- if not folder:
- os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code))
- os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code + "/win32"))
- os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code + "/linux"))
- os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code + "/darwin"))
- ret = FBMsg.ret()
- ret['ip'] = ip
- data['openid'] = transaction_code
- data['appid'] = transaction_code
- data['name'] = str(data['name'])
- data['staff_type'] = 'Admin'
- data['user_id'] = user_id
- data.pop('password1', '')
- data.pop('password2', '')
- ret['data'] = data
-
- # 注意:上面的注册成功日志已经在创建用户后记录,这里不需要重复记录
-
- return JsonResponse(ret)
|