Compare commits

..

No commits in common. "main" and "v0.0.2" have entirely different histories.
main ... v0.0.2

View File

@ -6,101 +6,101 @@ import Cookies from 'js-cookie'
import { fetchToken } from "./login"; import { fetchToken } from "./login";
const signUp = async (username: string, password: string, token: string) => { const signUp = async (username: string, password: string, token: string) => {
try { try {
const response = await api.post(`/auth/signup?token=${token}`, { const response = await api.post(`/signup?token=${token}`, {
username: username, username: username,
password: password, password: password,
}, { }, {
}); });
return response.data.access_token; return response.data.access_token;
} catch (error) { } catch (error) {
console.error('Error fetching token:', error); console.error('Error fetching token:', error);
throw error; throw error;
} }
}; };
export function SignupPage(props: {}) { export function SignupPage(props: {}) {
const [apiAuthenticated, setApiAuthenticated] = useContext(apiAuthenticatedContext) const [apiAuthenticated, setApiAuthenticated] = useContext(apiAuthenticatedContext)
const [searchParam, setSearchParam] = useSearchParams(); const [searchParam, setSearchParam] = useSearchParams();
const token = searchParam.get('token'); const token = searchParam.get('token');
if (token === null) { if (token === null){
return <Navigate to='/' /> return <Navigate to='/' />
}
if (apiAuthenticated) {
return <Navigate to='/' />
}
const handleSubmit: FormEventHandler<HTMLFormElement> = (event: FormEvent<HTMLFormElement>) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
const usernameFormData: FormDataEntryValue | null = data.get('username');
const passwordFormData: FormDataEntryValue | null = data.get('password');
if (usernameFormData === null || passwordFormData === null) {
return
} }
const username: string = usernameFormData.toString();
const password: string = passwordFormData.toString(); if (apiAuthenticated) {
return <Navigate to='/' />
}
const handleSubmit: FormEventHandler<HTMLFormElement> = (event: FormEvent<HTMLFormElement>) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
const usernameFormData: FormDataEntryValue | null = data.get('username');
const passwordFormData: FormDataEntryValue | null = data.get('password');
if (usernameFormData === null || passwordFormData === null){
return
}
const username: string = usernameFormData.toString();
const password: string = passwordFormData.toString();
signUp(username, password, token).then( signUp(username, password, token).then(
() => { () => {
fetchToken(username, password, true).then( fetchToken(username, password, true).then(
(token) => { (token) => {
setApiAuthenticated(true) setApiAuthenticated(true)
}, },
(error) => { (error) => {
return Promise.reject(error); return Promise.reject(error);
} }
)
}
) )
} }
)
}
return ( return (
<Container component="main" maxWidth="xs"> <Container component="main" maxWidth="xs">
<CssBaseline /> <CssBaseline />
<Box <Box
sx={{ sx={{
marginTop: 8, marginTop: 8,
display: 'flex', display: 'flex',
flexDirection: 'column', flexDirection: 'column',
alignItems: 'center', alignItems: 'center',
}} }}
> >
<Typography component="h1" variant="h5"> <Typography component="h1" variant="h5">
Sign up Sign up
</Typography> </Typography>
<Box component="form" onSubmit={handleSubmit} noValidate sx={{ mt: 1 }}> <Box component="form" onSubmit={handleSubmit} noValidate sx={{ mt: 1 }}>
<TextField <TextField
margin="normal" margin="normal"
required required
fullWidth fullWidth
id="username" id="username"
label="User Name" label="User Name"
name="username" name="username"
autoFocus autoFocus
/> />
<TextField <TextField
margin="normal" margin="normal"
required required
fullWidth fullWidth
name="password" name="password"
label="Password" label="Password"
type="password" type="password"
id="password" id="password"
autoComplete="new-password" autoComplete="new-password"
/> />
<Button <Button
type="submit" type="submit"
fullWidth fullWidth
variant="contained" variant="contained"
sx={{ mt: 3, mb: 2 }} sx={{ mt: 3, mb: 2 }}
> >
Sign Up Sign Up
</Button> </Button>
</Box> </Box>
</Box> </Box>
</Container> </Container>
) )
} }