HumanSignal / HumanSignal/label-studio

第三方平台接入

Open
#6,854 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.