package com.social.media.application.exception;

/**
 * Exception thrown when authentication fails
 */
public class AuthenticationException extends RuntimeException {
    
    public AuthenticationException(String message) {
        super(message);
    }
    
    public AuthenticationException(String message, Throwable cause) {
        super(message, cause);
    }
    
    public static AuthenticationException invalidCredentials() {
        return new AuthenticationException("Credenciais inválidas. Verifique seu email e senha.");
    }
    
    public static AuthenticationException userNotFound() {
        return new AuthenticationException("Usuário não encontrado.");
    }
    
    public static AuthenticationException accountLocked() {
        return new AuthenticationException("Conta bloqueada. Entre em contato com o suporte.");
    }
    
    public static AuthenticationException tokenExpired() {
        return new AuthenticationException("Token expirado. Faça login novamente.");
    }
    
    public static AuthenticationException invalidToken() {
        return new AuthenticationException("Token inválido.");
    }
    
    public static AuthenticationException missingToken() {
        return new AuthenticationException("Token de acesso obrigatório.");
    }
}
