feat: improve authentication and cookie management
- Updated Docker and Turbo configuration to include more environment variables - Modified API configuration to support dynamic cookie and CORS settings - Enhanced user authentication flow with optional device ID and automatic generation - Refactored login, register, and logout resolvers to handle device management - Updated GraphQL schema to make device ID optional - Improved web application logout and authentication handling - Simplified client-side GraphQL mutations for login and registration
This commit is contained in:
parent
d29d116214
commit
f9c6230101
15 changed files with 190 additions and 148 deletions
|
@ -5,7 +5,8 @@ import { createMutation } from '@urql/solid';
|
|||
const LOGIN_MUTATION = gql`
|
||||
mutation Login($email: String!, $password: String!) {
|
||||
login(email: $email, password: $password) {
|
||||
token
|
||||
accessToken
|
||||
refreshToken
|
||||
user {
|
||||
id
|
||||
username
|
||||
|
@ -35,7 +36,10 @@ export function LoginForm(props: LoginFormProps) {
|
|||
}
|
||||
|
||||
try {
|
||||
const result = await login({ email: email(), password: password() });
|
||||
const result = await login({
|
||||
email: email(),
|
||||
password: password(),
|
||||
});
|
||||
|
||||
if (result.error) {
|
||||
setError(result.error.message);
|
||||
|
@ -43,10 +47,12 @@ export function LoginForm(props: LoginFormProps) {
|
|||
}
|
||||
|
||||
if (result.data?.login) {
|
||||
const { token, user } = result.data.login;
|
||||
localStorage.setItem('token', token);
|
||||
const { accessToken, user } = result.data.login;
|
||||
localStorage.setItem('token', accessToken);
|
||||
localStorage.setItem('userId', user.id);
|
||||
props.onLoginSuccess(token, user.id);
|
||||
props.onLoginSuccess(accessToken, user.id);
|
||||
} else {
|
||||
setError('Login failed: No data received from server');
|
||||
}
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : 'An error occurred');
|
||||
|
|
|
@ -5,7 +5,8 @@ import { createMutation } from '@urql/solid';
|
|||
const REGISTER_MUTATION = gql`
|
||||
mutation Register($email: String!, $username: String!, $password: String!) {
|
||||
register(email: $email, username: $username, password: $password) {
|
||||
token
|
||||
accessToken
|
||||
refreshToken
|
||||
user {
|
||||
id
|
||||
username
|
||||
|
@ -54,10 +55,12 @@ export function RegisterForm(props: RegisterFormProps) {
|
|||
}
|
||||
|
||||
if (result.data?.register) {
|
||||
const { token, user } = result.data.register;
|
||||
localStorage.setItem('token', token);
|
||||
const { accessToken, user } = result.data.register;
|
||||
localStorage.setItem('token', accessToken);
|
||||
localStorage.setItem('userId', user.id);
|
||||
props.onRegisterSuccess(token, user.id);
|
||||
props.onRegisterSuccess(accessToken, user.id);
|
||||
} else {
|
||||
setError('Registration failed: No data received from server');
|
||||
}
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : 'An error occurred');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue