The server is returning user data. In particular, I am interested in his rights. With these rights, I will render the components. I am thinking of passing this data to components and doing some checks. All routes are in the index.js
import {Notfound404} from './components/404/404NotFound'
import {UserContext} from './UserContext'
const Router = () => {
const [user, setUser] = useState(null)
return (
<React.StrictMode>
<UserContext.Provider value={{user, setUser}}>
<CookiesProvider>
<BrowserRouter>
<Switch>
<Route exact path={'/'} component={Auth}/>
<Route exact path={'/settings'} component={Settings}/>
<Route exact path={'/event-logs'} component={EventLog}/>
<Route component={Notfound404} status={404}/>
</Switch>
</BrowserRouter>
</CookiesProvider>
</UserContext.Provider>
</React.StrictMode>
)
}
setting user data in Auth.js
import {UserContext} from '../../UserContext'
export const Auth = () => {
const {user, setUser} = useContext(UserContext)
const [username, setUsername] = useState('')
const [password, setPassword] = useState('')
const [token, setToken] = useCookies(['qr-token'])
useEffect(() => {
if (token['qr-token']) window.location.href = '/settings'
}, [token])
const credentials = {
username: username,
password: password
}
const sendCredentials = () => {
axios.post(`http://127.0.0.1:8000/api/v1/auth/`, credentials, {
headers: {
'Content-type': 'application/json',
}
})
.then(resp => {
setToken('qr-token', resp.data.token);
setUser(resp.data)
})
.catch(error => console.log(error.response))
}
return !token['qr-token'] &&
<div className={styles.authContainer}>
<label htmlFor={'username'}>Username</label>
<input id={'username'} type={'text'} placeholder={'username'}
onChange={evt => setUsername(evt.target.value)}
/>
<label htmlFor={'password'}>Password</label>
<input id={'password'} type={'password'} onChange={evt =>
setPassword(evt.target.value)}/>
<button onClick={sendCredentials}>Sign In</button>
</div>
)
}
In the index.js I am getting user data after authorization. But in settings.js use data is null
export const Settings = () => {
const {user, setUser} = useContext(UserContext)
console.log(user) # null
....
}
Probably I am doing something wrong and I am asking for your help. Thanks.