add bots
This commit is contained in:
parent
a014acd35d
commit
d4981b23de
@ -157,6 +157,7 @@ def validate_username(value: str,
|
|||||||
field_name: str = "login",
|
field_name: str = "login",
|
||||||
with_httpexception=False,
|
with_httpexception=False,
|
||||||
need_back=False,
|
need_back=False,
|
||||||
|
is_bot=False,
|
||||||
min_length=3,
|
min_length=3,
|
||||||
max_length=32,
|
max_length=32,
|
||||||
error_status_code: int = status.HTTP_401_UNAUTHORIZED,
|
error_status_code: int = status.HTTP_401_UNAUTHORIZED,
|
||||||
@ -169,7 +170,7 @@ def validate_username(value: str,
|
|||||||
- no consecutive underscores
|
- no consecutive underscores
|
||||||
- only [A-Za-z0-9_]
|
- only [A-Za-z0-9_]
|
||||||
"""
|
"""
|
||||||
valid, result = core_validate_username(value, field_name, need_back=True, min_length=min_length, max_length=max_length)
|
valid, result = core_validate_username(value, field_name, need_back=True, is_bot=is_bot, min_length=min_length, max_length=max_length)
|
||||||
if not valid:
|
if not valid:
|
||||||
if with_httpexception:
|
if with_httpexception:
|
||||||
raise HTTPException(status_code=error_status_code, detail=error_detail)
|
raise HTTPException(status_code=error_status_code, detail=error_detail)
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import re
|
|||||||
def validate_username(value: str,
|
def validate_username(value: str,
|
||||||
field_name: str = "login",
|
field_name: str = "login",
|
||||||
need_back=False,
|
need_back=False,
|
||||||
|
is_bot=False,
|
||||||
min_length=3,
|
min_length=3,
|
||||||
max_length=32) -> str:
|
max_length=32) -> str:
|
||||||
"""
|
"""
|
||||||
@ -38,7 +39,25 @@ def validate_username(value: str,
|
|||||||
msg = f"{field_name.capitalize()} must contain only English letters, digits, and underscores"
|
msg = f"{field_name.capitalize()} must contain only English letters, digits, and underscores"
|
||||||
return (False, msg) if need_back else False
|
return (False, msg) if need_back else False
|
||||||
|
|
||||||
return (True, value.lower()) if need_back else value.lower()
|
val_lower = value.lower()
|
||||||
|
|
||||||
|
# Проверка окончания имени в зависимости от is_bot
|
||||||
|
if is_bot and not val_lower.endswith("bot"):
|
||||||
|
msg = f"{field_name.capitalize()} must end with 'bot' for bot accounts"
|
||||||
|
return (False, msg) if need_back else False
|
||||||
|
|
||||||
|
if not is_bot and val_lower.endswith("bot"):
|
||||||
|
msg = f"{field_name.capitalize()} must not end with 'bot' for non-bot accounts"
|
||||||
|
return (False, msg) if need_back else False
|
||||||
|
|
||||||
|
# Если заканчивается на 'bot', то перед ним должно быть >=3 символов (кроме '_')
|
||||||
|
if val_lower.endswith("bot"):
|
||||||
|
prefix = re.sub(r'_+', '', val_lower[:-3]) # убираем все подчёркивания
|
||||||
|
if len(prefix) < 3:
|
||||||
|
msg = f"{field_name.capitalize()} must contain at least 3 non-underscore characters before 'bot'"
|
||||||
|
return (False, msg) if need_back else False
|
||||||
|
|
||||||
|
return (True, val_lower) if need_back else val_lower
|
||||||
|
|
||||||
|
|
||||||
def validate_password(value: str,
|
def validate_password(value: str,
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "common-lib"
|
name = "common-lib"
|
||||||
version = "0.0.34"
|
version = "0.0.35"
|
||||||
description = "Библиотека общих компонентов для микросервисов yobble"
|
description = "Библиотека общих компонентов для микросервисов yobble"
|
||||||
authors = [{ name = "cheykrym", email = "you@example.com" }]
|
authors = [{ name = "cheykrym", email = "you@example.com" }]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user