Первая попытка реализация backend подсистемы проекта "Деканат" Сделан на основе проекта из github: https://github.com/AleksK1NG/Go-Clean-Architecture-REST-API Изменения:
- Обновлена версия golang до 1.23 и зависимостей этого golang кода;
- Скорректирована модель User (удалены ненужные поля) и весь код ее использующий, включая миграцию для PostgreSQL;
- Работает авторизация, на JWT токенах, для особых операций (удаление пользователя) требуется еще CSRF токен (пока так, но хз посмотрим надо ли нам это вообще);
- В коде присутствуют ручки, которые не нужны в нашем проекте, их использовать не надо, на данный момент на фронте реализуем только авторизацию (Регистрация, логин, разлогин). Сейчас апи предоставляет возможность регистрироваться админом без какого-либо апрува, что нехорошо, но чтобы хоть что-то показать сойдет, тем более, что проектом пока никто не пользуется, и реальных данных нет.
- Восстановил работу локального развертывания через docker-compose.dev.yml. Для локально развертывания, надо выполнить следующую команду из корневой директории репозитория:
docker-compose -f docker-compose.dev.yml up
Как пользоваться ручками авторизации:
- Базовый путь к апи backend подсистемы при локальной разработке: "127.0.0.1:5000/api/v1", нужно именно https соединение, ошибки самоподписанного сертификата надо игнорить.
Регистрация Запрос:
curl --location 'https://127.0.0.1:5000/api/v1/auth/register' \
--header 'Content-Type: application/json' \
--data-raw '{
"first_name": "Anton",
"last_name": "Ivanov",
"password": "654321",
"email": "anton@gmail.com",
"role": "user",
"about": "test user",
"phone_number": "+78001231232",
"gender": "male"
}'
Ответ: JSON с сохраненными сведениями о новом пользователе
Логин Запрос:
curl --location 'https://127.0.0.1:5000/api/v1/auth/login' \
--header 'Authorization: jwt: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRlc3RAZ21haWwuY29tIiwiaWQiOiJiZTlkMmRhNy00N2MwLTQ5ZjAtOTYwNC1jMWQ2ZDk4MTg0NTkiLCJleHAiOjE3NDQxMjkxMjN9.utskRtJySCSizYf4mMs7UYPUSs99vZNOoBEVuhXGE2c' \
--header 'Content-Type: application/json' \
--data-raw '{
"password": "123456",
"email": "test@gmail.com"
}'
Ответ: JSON с JWT токеном
Выход из системы Запрос:
curl --location --request POST 'https://127.0.0.1:5000/api/v1/auth/logout' \
--header 'Authorization: jwt: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRlc3RAZ21haWwuY29tIiwiaWQiOiJiZTlkMmRhNy00N2MwLTQ5ZjAtOTYwNC1jMWQ2ZDk4MTg0NTkiLCJleHAiOjE3NDQxMjkxMjN9.utskRtJySCSizYf4mMs7UYPUSs99vZNOoBEVuhXGE2c'
Ответ: код успешности операции или код ошибки с описанием в теле ответа.
Показать список всех пользователей нашей системы Запрос:
curl --location 'https://127.0.0.1:5000/api/v1/auth/all' \
--header 'Authorization: jwt: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRlc3RAZ21haWwuY29tIiwiaWQiOiJiZTlkMmRhNy00N2MwLTQ5ZjAtOTYwNC1jMWQ2ZDk4MTg0NTkiLCJleHAiOjE3NDQxMjkxMjN9.utskRtJySCSizYf4mMs7UYPUSs99vZNOoBEVuhXGE2c'
Ответ: JSON содержащий внутри массив пользователей и несколько полей с доп информацией