import React, { useState } from 'react'; import { useNavigate, Link } from 'react-router-dom'; import { authService, LoginData } from '../services/membershipService'; const Login: React.FC = () => { const navigate = useNavigate(); const [formData, setFormData] = useState({ email: '', password: '' }); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setLoading(true); try { await authService.login(formData); navigate('/dashboard'); } catch (err: any) { console.error('Login error:', err.response?.data); // Debug log const errorDetail = err.response?.data?.detail; if (typeof errorDetail === 'string') { setError(errorDetail); } else if (errorDetail && typeof errorDetail === 'object') { // Handle validation error objects setError('Login failed. Please check your credentials.'); } else { setError('Login failed. Please check your credentials.'); } } finally { setLoading(false); } }; return (
S

SASA Member Portal

Member access and admin control room
Community Access

Welcome to SASA

Swansea Airport Stakeholder's Association manages member access, events, and operations from one shared platform.

Manage your membership, payments, and events in one place
Keep profile and contact details current without admin help
Admin users can switch into a separate operations workspace after login

Sign In

Secure session
{error &&
{error}
}
Forgot your password?
); }; export default Login;