Un composant React réutilisable pour l'intégration de CAPTCHA dans vos applications web.
npm install captcha-imh-component
import React, { useState } from 'react';
import Captcha from 'captcha-imh-component';
function App() {
const [captchaValue, setCaptchaValue] = useState('');
const [reset, setReset] = useState(false);
const handleCaptchaChange = (value) => {
setCaptchaValue(value);
};
const handleReset = () => {
setReset(!reset);
};
return (
<div>
<Captcha
onChange={handleCaptchaChange}
reset={reset}
/>
<button onClick={handleReset}>Reset CAPTCHA</button>
<p>Valeur saisie: {captchaValue}</p>
</div>
);
}
export default App;
Prop | Type | Défaut | Description |
---|---|---|---|
reset |
boolean |
false |
Force le rechargement du CAPTCHA |
onChange |
function |
- | Callback appelé quand la valeur d'entrée change |
onCaptchaTextChange |
function |
- | Callback appelé quand le texte CAPTCHA change |
style |
object |
{} |
Styles pour l'icône de rafraîchissement |
error |
object |
- | Objet d'erreur à afficher |
apiEndpoint |
string |
'/api/generate-captcha' |
URL de l'API CAPTCHA |
httpMethod |
string |
'GET' |
Méthode HTTP pour l'API |
placeholder |
string |
'Entrer CAPTCHA' |
Placeholder du champ de saisie |
makeApiCall |
function |
- | Fonction personnalisée pour les appels API |
sessionStorageKey |
string |
'sessionId' |
Clé de stockage pour l'ID de session |
captchaStorageKey |
string |
'captcha' |
Clé de stockage pour le texte CAPTCHA |
inputStyle |
object |
{} |
Styles personnalisés pour le champ de saisie |
containerStyle |
object |
{} |
Styles personnalisés pour le conteneur |
imageStyle |
object |
{} |
Styles personnalisés pour l'image CAPTCHA |
ErrorComponent |
component |
- | Composant personnalisé pour l'affichage des erreurs |
import Captcha from 'captcha-imh-component';
const customApiCall = async (method, url, data, headers) => {
// Votre logique d'appel API personnalisée
const response = await fetch(url, {
method,
headers: {
...headers,
'Authorization': 'Bearer your-token'
},
body: data ? JSON.stringify(data) : undefined
});
return response.json();
};
function App() {
return (
<Captcha
makeApiCall={customApiCall}
apiEndpoint="https://your-api.com/captcha"
/>
);
}
import Captcha from 'captcha-imh-component';
const CustomError = ({ error, message }) => (
<div className="custom-error-display">
{error?.data?.detail && <span>{message}</span>}
</div>
);
function App() {
return (
<Captcha
errorComponent={CustomError}
/>
);
}
import Captcha from 'captcha-imh-component';
function App() {
const customStyles = {
container: {
backgroundColor: '#f5f5f5',
padding: '20px',
borderRadius: '8px'
},
input: {
fontSize: '16px',
fontFamily: 'Arial, sans-serif',
border: '2px solid #007bff'
},
image: {
border: '1px solid #ddd',
borderRadius: '4px'
}
};
return (
<Captcha
containerStyle={customStyles.container}
inputStyle={customStyles.input}
imageStyle={customStyles.image}
/>
);
}
Le composant attend une réponse API dans l'un des formats suivants :
{
"data": {
"image": "base64-encoded-image-string",
"sessionId": "session-identifier"
}
}
{
"data": {
"captchaText": "text-captcha-content",
"sessionId": "session-identifier"
}
}
Le composant utilise les classes CSS suivantes que vous pouvez personnaliser :
-
.captcha-container
- Conteneur principal -
.captcha-image-container
- Conteneur de l'image -
.captcha-image
- Image CAPTCHA -
.captcha-input-container
- Conteneur du champ de saisie -
.captcha-input
- Champ de saisie -
.captcha-error
- Affichage des erreurs
- React >= 16.8.0
- react-dom >= 16.8.0
ISC
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou soumettre une pull request.