Я выполняю мутацию GraphQL для попытки аутентификации при входе в систему, однако она каждый раз возвращает true и сохраняет нового пользователя AuthToken, даже если данные для входа неверны. Это очень странно, потому что когда я запускаю запрос GraphQL в IDE, он работает как надо. (ie. Только успешно, если логин / пароль верны). Я не уверен, как он генерирует auth.Token и console.logs "onSuccess" независимо от того, что я положил в формы. Любая помощь будет принята с благодарностью, это сводит меня с ума. Спасибо.
const LOGIN_USER = gql `
mutation LoginUser {
login (input: {
clientMutationId:"uniqueId"
username: "admin"
password: "password"
}) {
authToken
user {
id
name
}
}
}
`
const SignIn = (props) => {
const [username, setUsername] = useState('')
const [password, setPassword] = useState('')
const [loggedIn, setLoggedIn] = useState(false)
const onLoginError = () => {
console.log("onError")
}
const onLoginSuccess = () => {
console.log("onSuccess")
}
const [loginUser, { loading, error }] = useMutation(LOGIN_USER, {
onCompleted({login}) {
localStorage.setItem('token', login.authToken)
onLoginSuccess()
},
onError(error){
alert(error)
onLoginError()
}
})
const onLoginSubmit = (event) => {
event.preventDefault()
loginUser({ variables:
{
"input": {
"clientMutationId": "uniqueId",
"username": username,
"password": password
}
}
})
}
const handleOnChange = (event) => {
if(event.target.name === "username") {
setUsername(event.target.value)
} else if(event.target.name === "password") {
setPassword(event.target.value)
}
}
return (
<form onSubmit={onLoginSubmit}>
<>
<input
className={styles.formInput}
name="username"
placeholder="Username or email"
type="text"
value={username}
onChange={handleOnChange}
>
</input>
<input
className={styles.formInput}
name="password"
placeholder="Password"
type="password"
value={password}
onChange={handleOnChange}
>
</input>
<button
className="button is-primary is-pulled-right has-text-weight-semibold"
type="submit"
disabled={loading}
><FiLogIn className={styles.loginIcon}/>
Login
</button>
</form>
</>
export default SignIn