Привет Ребята,
У меня такой спор вышел со знакомым по проектированию активации акаунта и смены емайла.
Есть два варианта которых мы обсуждаем.
1. Хранить токен (код для активации) в таблице юзеров. И если активирует акаунт, ставим статус что активировали емайл.
При смене емайла, опять же используем поле токен в юзер таблице а также ещё поле new_email где будет хранится новый емайл до тех пор пока не активируем его, потом нулим его.
Но с другой стороны то что линк живёт вечно (пока не активируют), ничего не сломает по безопасности, он же не получает доступ к акаунту.
Минусы этого подхода к примеру то что линк на активацию будет всегда активным (пока не активируют емайл) иначе придётся создавать ещё одно поле уже под expires_at или что то в этом роде.
2. Хранить в отдельной таблице. Структура типа: id, user_id, type, value (тут будет например емайл на который сменим), token, created_at, expired_at
Такой вариант хорош что можно делать разные активации, как смена емайла, активация акаунта и.т.п.
Вариант 2 более гибкий, но первый в какой то мере быстрее.
Кто что думаем по этому поводу ? какой вариант правильней ? Учитывая ещё момент что продукт надо выводить быстрее на продакшен.