С помощью GraphQL сделала регистрацию и отдельно вход Login. При регистрации никаких ошибок нет. При входе, если пишу неправильный email, - сервер выдает,что такого email нет. Если пишу правильный email - то все нормально. Но при попытке войти в приложение на страницу, где должна выводиться информация с сервера, сервер выдает ошибку You are not authorized. Что я не так написала? Просьба написать код, а то я не разбираюсь в GraphQL и уже целый день ищу информацию в интернете, но не могу найти. Мой код:
index.js:
import ReactDOM from "react-dom";
import App from "./components/App/App";
import {
ApolloClient,
InMemoryCache,
ApolloProvider
} from "@apollo/client";i
import { Provider } from "react-redux";
const client = new ApolloClient( {
uri: "http://localhost:4000/api",
cache: new InMemoryCache()
} );
ReactDOM.render(
<React.StrictMode>
<ApolloProvider client={ client }>
<App/>
</ApolloProvider>
</React.StrictMode>,
document.getElementById( "root" )
);
Login.js:
import { gql, useMutation, useQuery } from "@apollo/client";
const LOG_IN = gql`
mutation LogIn($email: String!
$password: String!) {
login ( email: $email, password: $password ) {
token
}
}
`;
function LogIn() {
const navigate = useNavigate();
const [ login, { error }, ] = useMutation( LOG_IN, {
onCompleted: ({ login }) => {
localStorage.setItem( AUTH_TOKEN, login.token );
dispatch( logIn() );
navigate( "/process" );
}
} );
const onSubmit = async({ email, password }) => {
console.log( email, password );
login( {
variables: {
email: email,
password: password
}
} );
};
<form>......
Process.js (который должен получать данные с сервера):
const GET_PROCESS = gql`
query GetProcess {
processList {
id
name
}
}
`;
function Process() {
const { loading, error, data } = useQuery( GET_PROCESS );
console.log(data);
if( loading ) return "Loading...";
if( error ) return `Error! ${ error.message }`;
return (
<>
<h1>Process</h1>
...
</>
);
}
export default Process;