"""
Authentication and authorization exceptions
"""
from app.core.exceptions.base import SentinelException, NotFoundError, PermissionError


class AuthenticationError(SentinelException):
    """Base authentication error"""
    pass


class InvalidCredentialsError(AuthenticationError):
    """Invalid credentials error"""
    pass


class TokenExpiredError(AuthenticationError):
    """Token expired error"""
    pass


class InvalidTokenError(AuthenticationError):
    """Invalid token error"""
    pass


class UserNotFoundError(NotFoundError):
    """User not found error"""
    pass


class UserInactiveError(PermissionError):
    """User inactive error"""
    pass


class UserLockedError(PermissionError):
    """User locked error"""
    pass


class EmailNotVerifiedError(PermissionError):
    """Email not verified error"""
    pass


class InsufficientPermissionsError(PermissionError):
    """Insufficient permissions error"""
    pass


class TwoFactorRequiredError(AuthenticationError):
    """Two-factor authentication required error"""
    pass
