# TEMPORARI BACKEND DOCS Base URL: https://goosetrack-backend-zk53.onrender.com/ Особенности бэкенда: если на бэк 15 минут не приходит никаких запросов, то он останавливается, а когда ему приходит любой запрос он заново запускается. Это означает, что любой запрос может упереться в timeout если до него за 15 минут не было действий. ## **'/auth'** ### **POST '/login'** #### request body: * **email :** * **password :** #### fail responses ###### 400 failed request body validation ###### 404 user not found #### success response * token: jwt token used to authorise all request, expires in 1 hour; * refreshToken: a token that is used to logout and refresh a jwt token; * user: a user object with all the fields ### **POST '/signup'** or **POST '/register'** #### request body: * **email :** * **password :** * **name :** #### fail responses ###### 400 failed request body validation ###### 403 email taken #### success response * **token :** jwt token used to authorise all request, expires in 1 hour; * **refreshToken :** a token that is used to logout and refresh a jwt token; * **user :** a user object with all the fields ### **GET '/refreshToken'** #### request authorisation header : Bearer refreshToken #### fail responses ###### 401 empty or invalid token #### success response * **token :** jwt token used to authorise all request, expires in 1 hour; ### **DELETE '/logout'** #### request authorisation header : Bearer refreshToken #### fail responses ###### 401 empty or invalid token #### success response * **success :** true ## '/users' ### GET '/' #### request authorisation header : Bearer token #### fail responses ###### 401 empty or invalid token ###### 404 user not found (user deleted but token valid) #### success response * **user :** a user object with all the fields ### PATCH '/' #### request authorisation header : Bearer token#### request body: * **email \|| name || other fields to patch** #### fail responses ###### 400 failed request body validation ###### 401 empty or invalid token ###### 404 user not found (user deleted but token valid) #### success response * **user :** a user object with all the fields ### DELETE '/' #### request authorisation header : Bearer token#### request #### fail responses ###### 401 empty or invalid token #### success response * **success :** true # Логика программы Когда сайт запускается, включается самый верхний компонент под редаксом, работает один раз и тухнет. В этом компоненте происходит следущее: 1. в поле current user в сторе записывается null 2. компонент проверяет наличие refreshToken в local storage 3. если refreshToken отсутствует, компонент затухает 4. если присутствует, то программа отправляет GET запрос на auth/rereshToken с этим токеном в заголовке (bearer token) 5. Если ответ не success, то refreshToken удаляется из localstorage и компонент затухает 6. Если ответ.статус = 200, то пользователь получает обычный токен доступа, можно записать его в переменные или куки или локалсторэдж (лучше в куки, он все равно будет обновлятся при каждой загрузке страницы, так что пусть теряется) 7. Планируется что вместе с токеном будет приходить юзер, но пока надо отправить новый GET запрос на /users с обычным токеном в заголовке (bearer) 8. Как только компонент получает юзера, он записывает юзера в redux store и затухает. Можно сделать loader пока сайт не получит ответа, но можно и не делать, тогда пользователь попадет на лендинг а потом (секунд через 30) чудом его перекинет на календарь. Учитывая, что этот запрос зачастую будет первым за 15 минут (а все остальные уже будут после, а на лендинг пейдже есть ещё запрос на ревью, наверно лучше будет сделать лоудер, и если он упрется в таймаут отобразить отдельный компонент который будет говорить что server down, try reloading the page)