Самописная аутентификация пользователей - это очень больно
- Нужны формы логина и регистрации. При этом на регистрации неплохо бы спросить емейл, чтобы уметь делать рассылки. При этом вам начнут писать учителя, у учеников которых нет емейлов, с вопросом, как поступать.
- АПИ авторизации через соцсети со временем протухают. Через соцсеть надо не забывать вытаскивать емейл.
- Емейлы везде нужно ловеркейсить.
- Емейлы нужно проверять по регулярке, чтобы хотя бы слешей в них не было. При этом в валидном шотландском емейле может быть О'Построф.
- Конечно же, пользователи захотят менять емейлы с сохранением профиля, поэтому привязывать аккаунт надо к айдишнику, а не к емейлу.
- Для восстановления емейла нужна форма сброса пароля. Емейл в ней нужно тоже ловеркейсить. Для рассылки писем через эту страницу нужно зарегать технический гмейл-аккаунт. При этом на сервере нужно для него сохранить не пароль, а технический токен. Пароль желательно при этом не потерять, а ещё желательно убедить гугл в том, что этот аккаунт не надо блокировать.
- Для пароля нужно использовать models.PasswordField
, чтобы пароль сам за вас хешировался и солился в базе. При этом пароль всё равно будет утекать в открытую в логи, пока вы не поставите везде где надо декоратор sensitive_post_parameters
.
В общем, я созрел для вендор-лока на Auth0, Firebase Authentication или Amazon Cognito User Pool.