Initial commit

This commit is contained in:
2025-11-25 00:43:00 +05:30
commit ce133723fd
48 changed files with 22361 additions and 0 deletions

100
src/pages/ResetPassword.jsx Normal file
View File

@@ -0,0 +1,100 @@
import React, { useState } from 'react';
import { useSearchParams, useNavigate } from 'react-router-dom';
import authService from '../services/authService';
import './Auth.css';
const ResetPassword = () => {
const [formData, setFormData] = useState({
password: '',
confirmPassword: ''
});
const [error, setError] = useState('');
const [loading, setLoading] = useState(false);
const [searchParams] = useSearchParams();
const navigate = useNavigate();
const token = searchParams.get('token');
const handleInputChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value
});
};
const handleSubmit = async (e) => {
e.preventDefault();
setError('');
setLoading(true);
if (formData.password !== formData.confirmPassword) {
setError('Passwords do not match');
setLoading(false);
return;
}
if (!token) {
setError('Invalid or missing reset token.');
setLoading(false);
return;
}
try {
await authService.resetPassword({ token, password: formData.password });
setError('Password has been reset successfully. You can now login with your new password.');
setTimeout(() => {
navigate('/auth');
}, 3000);
} catch (err) {
setError(err.response?.data?.message || 'An error occurred.');
} finally {
setLoading(false);
}
};
return (
<div className="auth-container">
<div className="auth-card">
<div className="auth-header">
<div className="auth-logo">
<img src="/wraffle_logo.png" alt="Wraffle" className="auth-logo-img" />
</div>
<h2>Reset Password</h2>
</div>
<form onSubmit={handleSubmit} className="auth-form">
<div className="form-group">
<label htmlFor="password">New Password</label>
<input
type="password"
id="password"
name="password"
value={formData.password}
onChange={handleInputChange}
required
/>
</div>
<div className="form-group">
<label htmlFor="confirmPassword">Confirm New Password</label>
<input
type="password"
id="confirmPassword"
name="confirmPassword"
value={formData.confirmPassword}
onChange={handleInputChange}
required
/>
</div>
{error && <div className="error-message">{error}</div>}
<button type="submit" className="auth-button" disabled={loading}>
{loading ? 'Resetting...' : 'Reset Password'}
</button>
</form>
</div>
</div>
);
};
export default ResetPassword;