import React, { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { authService, RegisterData } from '../services/membershipService'; const Register: React.FC = () => { const navigate = useNavigate(); const [formData, setFormData] = useState({ email: '', password: '', first_name: '', last_name: '', phone: '', address: '' }); const [confirmPassword, setConfirmPassword] = useState(''); const [passwordsMatch, setPasswordsMatch] = useState(true); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; const handlePasswordChange = (e: React.ChangeEvent) => { const { name, value } = e.target; if (name === 'password') { setFormData(prev => ({ ...prev, password: value })); setPasswordsMatch(value === confirmPassword); } else if (name === 'confirmPassword') { setConfirmPassword(value); setPasswordsMatch(formData.password === value); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); // Validate password confirmation if (formData.password !== confirmPassword) { setError('Passwords do not match. Please try again.'); return; } setLoading(true); try { // Register the user await authService.register(formData); // Automatically log in the user await authService.login({ email: formData.email, password: formData.password }); // Redirect to dashboard navigate('/dashboard'); } catch (err: any) { setError(err.response?.data?.detail || 'Registration failed. Please try again.'); } finally { setLoading(false); } }; return (
S

SASA Member Portal

Membership registration and profile setup
New Membership

Join the SASA community

Create your account to manage your membership, respond to events, and keep your contact details up to date.

Straightforward onboarding with automatic sign-in
Membership tiers, payments, and event RSVPs in one place
A separate admin workspace for staff users after login

Create Account

Step 1 of 1

Complete the essentials below. You can add or update the rest of your profile later from your dashboard.

{error &&
{error}
}
Minimum 8 characters.
{confirmPassword ? ( {passwordsMatch ? 'Passwords match.' : 'Passwords do not match.'} ) : ( Re-enter your password to confirm it. )}