async def signup(form_data: EmailPasswordForm, request: Request, background_tasks: BackgroundTasks): try: try: user = User(email=form_data.username, password=form_data.password) except NotUniqueError: user = User.objects.get(email=form_data.username, verified=False, created__lt=datetime.now() - timedelta(days=1)) user.password = form_data.password if User.objects.count() == 0: user.admin = True user.hash_password() user.save() verify_token = create_access_token(str(user.id), expires_delta=timedelta(days=1)) send_email_backround( background_tasks, 'Verify Your Email', [user.email], 'verify_email.html', { 'url': f'{request.client.host}:{request.client.port}/login?t={verify_token}', }) # FOR DEBUG PURPOSES # TODO: remove in production print(request.client.host + ':' + request.client.port + '/login?t=' + verify_token) return {'id': str(user.id)} except DoesNotExist: raise UserAlreadyExistsError().http_exception except Exception as e: raise e