Skip to content

Commit 9d2169e

Browse files
committed
feat: add encryption functionality for email addresses and corresponding tests
1 parent 98c3e4b commit 9d2169e

5 files changed

Lines changed: 189 additions & 1 deletion

File tree

app/services/encryption.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import os
2+
3+
from cryptography.fernet import Fernet
4+
5+
test_encryption_key = "r0-QKv5qACJNFRqy2cNZCsfZ_zVvehlC-v8zDJb--EI="
6+
# Carrega a chave da variável de ambiente
7+
ENCRYPTION_KEY = os.getenv("ENCRYPTION_KEY", test_encryption_key)
8+
9+
if not ENCRYPTION_KEY:
10+
raise RuntimeError(
11+
"ENCRYPTION_KEY não está definida nas variáveis de ambiente."
12+
)
13+
14+
cipher = Fernet(ENCRYPTION_KEY.encode())
15+
16+
17+
def encrypt_email(email: str) -> str:
18+
"""Criptografa uma string de e-mail."""
19+
return cipher.encrypt(email.encode()).decode()
20+
21+
22+
def decrypt_email(encrypted_email: str) -> str:
23+
"""Descriptografa uma string de e-mail."""
24+
return cipher.decrypt(encrypted_email.encode()).decode()

docker-compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ services:
1414
- SQLITE_PATH=app/services/database/pynewsdb.db
1515
- SQLITE_URL=sqlite+aiosqlite://
1616
- SECRET_KEY=1a6c5f3b7d2e4a7fb68d0casd3f9a7b2d8c4e5f6a3b0d4e9c7a8f1b6d3c0a7f5e
17+
- ENCRYPTION_KEY=smR739opNB9FJ4hEm5ZIG8Gr-Qnvqtem4ehwl4RIUes=
1718
- ALGORITHM=HS256
1819
- ACCESS_TOKEN_EXPIRE_MINUTES=20
1920
restart: unless-stopped

0 commit comments

Comments
 (0)