HumanSignal / HumanSignal/label-studio
第三方平台接入
- Dominant language
- TypeScript
- Stars
- 28.3k
- Forks
- 3.7k
- Avg merge
- 14h
- Merged PRs (30d)
- 15
Description
label_studio/users/urls.py
`path('user/auto-login/', views.auto_register_and_login, name='auto_register_and_login'),`
label_studio/users/views.py
```
@csrf_exempt
def auto_register_and_login(request):
if request.method == 'GET':
username = request.GET.get('username')
password = request.GET.get('password')
email = request.GET.get('email')
next_page = request.GET.get('next')
if not username or not password or not email:
return JsonResponse({'error': '缺少必要的字段username,username或者email'}, status=400)
# 检查该用户是否已经存在
if User.objects.filter(email=email).exists():
user = request.user
# user = authenticate(username=email, password=password)
# if user is not None:
# 如果用户已经登录,重定向到下一页
if user.is_authenticated:
logger.info(f'用户{user.username}已经存在,但是已经登录,重定向到下一页')
redirect_url = next_page if next_page else reverse('projects:project-index')
return redirect(redirect_url)
logger.info(f'用户{user.username}已经存在,但是未登录,进行登录')
user_info = User.objects.get(email=email)
try:
login(request, user_info, backend='django.contrib.auth.backends.ModelBackend')
except Exception as e:
logger.error(f'用户登录失败,错误信息:{e}')
return JsonResponse({'error': '用户登录失败'}, status=400)
logger.info(f'用户{user_info.username}登录成功')
org_pk = Organization.find_by_user(user_info).pk
user_info.active_organization_id = org_pk
user_info.save(update_fields=['active_organization'])
redirect_url = next_page if next_page else reverse('projects:project-index')
logger.info(f'用户{user.username}登录成功,重定向到{redirect_url}')
return redirect(redirect_url)
# 注册用户
user = User.objects.create_user(username=username, password=password, email=email)
user.save()
if Organization.objects.exists():
org = Organization.objects.first()
org.add_user(user)
else:
org = Organization.create_organization(created_by=user, title='Label Studio')
user.active_organization = org
user.save(update_fields=['active_organization'])
# 验证用户并登录
# user = authenticate(username=username, password=password)
# if user is not None:
try:
logger.info(f'用户注册完后,用户{user.username}进行登录')
login(request, user, backend='django.contrib.auth.backends.ModelBackend')
except Exception as e:
logger.error(f'用户登录失败,错误信息:{e}')
return JsonResponse({'error': '用户登录失败'}, status=400)
redirect_url = next_page if next_page else reverse('projects:project-index')
logger.info(f'用户{user.username}登录成功,重定向到{redirect_url}')
return redirect(redirect_url)
# token, created = Token.objects.get_or_create(user=user)
# return JsonResponse({'token': token.key}, status=200)
# else:
# return JsonResponse({'error': 'Authentication failed'}, status=400)
return JsonResponse({'error': '无效的请求方法'}, status=405)
```
Contributor guide
Assessment
This issue has not been assessed yet.