All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 3m23s
- Introduced a dual-token system for user authentication: a short-lived access token and a long-lived rotating refresh token. - Created a new RefreshToken model to manage refresh tokens securely. - Updated auth_api.py to handle login, refresh, and logout processes with the new token system. - Enhanced security measures including token rotation and theft detection. - Updated frontend to handle token refresh on 401 errors and adjusted SSE authentication. - Removed CORS middleware as it's unnecessary behind the nginx proxy. - Added tests to ensure functionality and security of the new token system.
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
MISSING_FIELDS = "MISSING_FIELDS"
|
|
EMAIL_EXISTS = "EMAIL_EXISTS"
|
|
MISSING_TOKEN = "MISSING_TOKEN"
|
|
INVALID_TOKEN = "INVALID_TOKEN"
|
|
TOKEN_TIMESTAMP_MISSING = "TOKEN_TIMESTAMP_MISSING"
|
|
TOKEN_EXPIRED = "TOKEN_EXPIRED"
|
|
MISSING_EMAIL = "MISSING_EMAIL"
|
|
USER_NOT_FOUND = "USER_NOT_FOUND"
|
|
ALREADY_VERIFIED = "ALREADY_VERIFIED"
|
|
MISSING_EMAIL_OR_PASSWORD = "MISSING_EMAIL_OR_PASSWORD"
|
|
INVALID_CREDENTIALS = "INVALID_CREDENTIALS"
|
|
NOT_VERIFIED = "NOT_VERIFIED"
|
|
ACCOUNT_MARKED_FOR_DELETION = "ACCOUNT_MARKED_FOR_DELETION"
|
|
ALREADY_MARKED = "ALREADY_MARKED"
|
|
REFRESH_TOKEN_REUSE = "REFRESH_TOKEN_REUSE"
|
|
REFRESH_TOKEN_EXPIRED = "REFRESH_TOKEN_EXPIRED"
|
|
MISSING_REFRESH_TOKEN = "MISSING_REFRESH_TOKEN"
|
|
|
|
|
|
class ErrorCodes:
|
|
"""Centralized error codes for API responses."""
|
|
UNAUTHORIZED = "UNAUTHORIZED"
|
|
CHILD_NOT_FOUND = "CHILD_NOT_FOUND"
|
|
TASK_NOT_FOUND = "TASK_NOT_FOUND"
|
|
REWARD_NOT_FOUND = "REWARD_NOT_FOUND"
|
|
ENTITY_NOT_ASSIGNED = "ENTITY_NOT_ASSIGNED"
|
|
OVERRIDE_NOT_FOUND = "OVERRIDE_NOT_FOUND"
|
|
MISSING_FIELD = "MISSING_FIELD"
|
|
INVALID_VALUE = "INVALID_VALUE"
|
|
VALIDATION_ERROR = "VALIDATION_ERROR"
|
|
INTERNAL_ERROR = "INTERNAL_ERROR"
|
|
CHORE_EXPIRED = "CHORE_EXPIRED"
|
|
CHORE_ALREADY_PENDING = "CHORE_ALREADY_PENDING"
|
|
CHORE_ALREADY_COMPLETED = "CHORE_ALREADY_COMPLETED"
|
|
PENDING_NOT_FOUND = "PENDING_NOT_FOUND"
|
|
INSUFFICIENT_POINTS = "INSUFFICIENT_POINTS"
|
|
INVALID_TASK_TYPE = "INVALID_TASK_TYPE"
|