PersonQL provides a complete authentication system built for modern applications with security, scalability, and developer experience in mind.
Traditional email and password authentication with secure password hashing (PBKDF2) and validation.
import { useAuth } from '@personql/react';
function SignIn() {
const { signIn } = useAuth();
const handleSignIn = async () => {
await signIn({
email: 'user@example.com',
password: 'securePassword123',
rememberMe: true,
});
};
}
Integrate with popular OAuth providers:
import { useAuth } from '@personql/react';
function OAuthSignIn() {
const { signInWithOAuth } = useAuth();
const handleGoogleSignIn = async () => {
await signInWithOAuth('google', {
redirectUri: 'https://yourapp.com/auth/callback',
});
};
}
Add an extra layer of security with MFA via:
import { useAuth } from '@personql/react';
function MFASetup() {
const { sendMFACode, verifyMFACode } = useAuth();
const handleSendCode = async () => {
await sendMFACode('sms', '+1234567890');
};
const handleVerifyCode = async (code) => {
await verifyMFACode(code);
};
}
Native biometric authentication for React Native apps:
import { useAuth } from '@personql/react-native';
function BiometricSignIn() {
const { signInWithBiometric, biometricAvailable } = useAuth();
if (biometricAvailable) {
return <button onClick={signInWithBiometric}>Sign In with Face ID</button>;
}
}
Anonymous Sessions
Authenticated Sessions
PersonQL uses JWT tokens for authentication:
Access Token
Refresh Token
import { useAuth } from '@personql/react';
function TokenRefresh() {
const { refreshToken, isTokenExpired } = useAuth();
useEffect(() => {
if (isTokenExpired()) {
refreshToken();
}
}, []);
}
Automatically collect device information for security analysis:
Real-time risk assessment based on:
Built-in protection against brute force attacks:
Automatic security header management:
import { SignUpForm } from '@personql/react';
<SignUpForm
onSuccess={() => navigate('/dashboard')}
requireEmailVerification={true}
passwordRequirements={{
minLength: 8,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSpecialChars: true,
}}
/>;
import { SignInForm } from '@personql/react';
<SignInForm
onSuccess={() => navigate('/dashboard')}
onMFARequired={() => navigate('/mfa')}
/>;
import { ForgotPasswordForm, ResetPasswordForm } from '@personql/react';
// Step 1: Request reset
<ForgotPasswordForm onSuccess={() => setEmailSent(true)} />;
// Step 2: Reset password
<ResetPasswordForm token={resetToken} onSuccess={() => navigate('/signin')} />;
Enforce Strong Passwords
Password Storage
Token Storage
Session Timeout
Gradual Rollout
Recovery Options
import { PersonQLProvider } from '@personql/react';
<PersonQLProvider
config={{
apiUrl: 'https://app.personql.com',
clientId: 'your-client-id',
auth: {
sessionTimeout: 240, // 4 hours
tokenRefreshInterval: 840, // 14 minutes
requireEmailVerification: true,
enableMFA: true,
},
}}
>
<App />
</PersonQLProvider>;
<PersonQLProvider
config={{
apiUrl: 'https://app.personql.com',
clientId: 'your-client-id',
security: {
deviceFingerprinting: true,
riskScoring: true,
rateLimit: {
requests: 300,
window: 60000, // 1 minute
},
passwordPolicy: {
minLength: 12,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSpecialChars: true,
preventCommon: true,
preventPrevious: 5,
},
},
}}
>
<App />
</PersonQLProvider>;