Add .env.example with configuration for database, Redis, security, SMTP, workers, and plugins. Add .gitignore for Python, Node.js, Next.js, Docker volumes, and IDE files. Add MIT License. Update README.md with feature overview, quick start guide, architecture description, plugin system documentation, security details, backup/restore instructions, and developer setup. Add Alembic configuration files and placeholder directories for API, web, worker, and plugin components
28 lines
648 B
Python
28 lines
648 B
Python
from argon2 import PasswordHasher
|
|
from argon2.exceptions import VerifyMismatchError
|
|
|
|
from apps.api.src.config import settings
|
|
|
|
ph = PasswordHasher(
|
|
time_cost=settings.ARGON2_TIME_COST,
|
|
memory_cost=settings.ARGON2_MEMORY_COST,
|
|
parallelism=settings.ARGON2_PARALLELISM,
|
|
hash_len=32,
|
|
salt_len=16,
|
|
)
|
|
|
|
|
|
def hash_password(password: str) -> str:
|
|
return ph.hash(password)
|
|
|
|
|
|
def verify_password(password: str, hashed: str) -> bool:
|
|
try:
|
|
return ph.verify(hashed, password)
|
|
except VerifyMismatchError:
|
|
return False
|
|
|
|
|
|
def check_password_needs_rehash(hashed: str) -> bool:
|
|
return ph.check_needs_rehash(hashed)
|