Перейти к содержанию

Миграция с 1.15.0 на 2.0.0

На бэкенде

Устанавливаем garpixcms версии 2.0.0:

pipenv install garpixcms==2.0.0

Создать структуру файлов и директорий:

app/migrations/garpix_auth/
app/migrations/garpix_auth/__init__.py

Создание и применение миграций:

python3 backend/manage.py makemigrations
python3 backend/manage.py migrate

Указать в backend/app/settings.py переменные (если указать значение 0 - протухать не будет):

GARPIX_ACCESS_TOKEN_TTL_SECONDS = 86400  # Токен будет протухать через сутки
GARPIX_REFRESH_TOKEN_TTL_SECONDS = 86400 * 14  # Рефреш-токен будет протухать после 14 суток

На фронтенде SPA

Изменить адрес логина с /api/login/ на /api/auth/login/.

Пример запроса (в качестве примера используется httpie):

http POST 'http://localhost:8000/api/auth/login/' username=user password=mysuperpassword

Пример ответа:

{
    "access_token": "7c21c191a3720925ff80350b395725d31745bcac",
    "access_token_expires": 86400,
    "refresh_token": "946cd6498df1de4bb24d0fc63286b01341265b3e",
    "refresh_token_expires": 1209600,
    "token_type": "Bearer"
}

Изменить тип токена в заголовках (Headers) с Token на Bearer. T.е.:

  • было: Authorization: Token 7c21c191a3720925ff80350b395725d31745bcac
  • стало: Authorization: Bearer 7c21c191a3720925ff80350b395725d31745bcac

Также, обратите внимание, что раньше ключ в ответе был token, стал access_token.

Если access_token протух, то запросы проходить не будут. Тогда необходимо обновить токен с помощью этой команды (в качестве примера используется httpie):

http POST 'http://localhost:8000/api/auth/refresh/' refresh_token=946cd6498df1de4bb24d0fc63286b01341265b3e

Пример ответа:

{
    "access_token": "227b68233b26ab16239db556a267a4f849fd882c",
    "access_token_expires": 86400,
    "result": true
}

При этом, если refresh-токен протух, то ответ будет:

{
    "result": false
}

Также, когда необходимо удалить все токены с бэкенда (сделать выход), то используем следующую команду (в качестве примера используется httpie):

http POST 'http://localhost:8000/api/auth/logout/' 'Authorization: Bearer 227b68233b26ab16239db556a267a4f849fd882c'

В случае успеха будет ответ:

{
    "result": true
}

В случае неудачи будет статус-код 401 Unauthorized.