# Про робочий процес токенів користувача

Токени користувачів використовуються для ідентифікації користувачів сторонніми службами, щоб завдання, виконані з їх використанням, були збережені в обліковому записі користувача.

## Як їх створюють

Зараз токени використовуються лише для надсилання завдань над реляційною базою даних. Токен створюється, коли зареєстрований користувач натискає «Натисніть тут, щоб розпочати курс» або «Натисніть тут, щоб розпочати проєкт», щоб розпочати один із курсів чи проєктів реляційної бази даних.

## Коли їх видаляють

Токен користувача видаляється, якщо користувач вийде із freeCodeCamp, скине свій прогрес, видалить свій обліковий запис або самостійно видалить токен за допомогою віджета у налаштуваннях.

## Як вони працюють

Токени зберігаються у колекції `UserToken` у базі даних. Кожен запис має унікальний `_id`, який є токеном та `user_id`, який посилає на обліковий запис користувача із колекції `user`. Токен закодовано за допомогою JWT та відправлено клієнту під час його створення. Потім цей закодований токен надають стороннім службам, які потребують його, а коли завдання виконане — відправляють його на наш API. Коли наш API отримує токен, він буде розкодованим, щоб ми могли ідентифікувати користувача та зберегти виконане завдання до його `completedChallenges`.
