Приложение Users, системы Карта Успеха
Материал из m6a
								Содержание
1. Общее описание
Приложение `users` отвечает за управление пользователями системы, включая регистрацию, аутентификацию, управление профилем и восстановление пароля.
2. Функциональность
2.1 Аутентификация
- Вход в систему (`login_view`)
 - Регистрация новых пользователей (`RegisterView`)
 - Выход из системы (`LogoutView`)
 - Восстановление пароля (`CustomPasswordResetView`)
 
2.2 Управление профилем
- Просмотр профиля (`UserProfileView`)
 -  Редактирование профиля
- Обновление личных данных
 
 
2.3 Безопасность
- Валидация email
 - Проверка уникальности email
 - Безопасное хранение паролей
 - Защита от CSRF
 
3. Модели и формы
3.1 Формы
class CustomUserCreationForm: fields = ['username', 'email', 'password']
class CustomUserChangeForm: fields = ['username', 'first_name', 'last_name', 'email']
3.2 Валидация
- Проверка уникальности email
 - Валидация паролей
 - Проверка обязательных полей
 
4. URL маршруты
 /users/
 ├── profile/          # Профиль пользователя
 ├── login/           # Вход в систему
 ├── register/        # Регистрация
 ├── logout/          # Выход
 └── password_reset/  # Восстановление пароля
     └── done/        # Страница после запроса сброса
5. Шаблоны
5.1 Основные шаблоны
- `login.html` - форма входа
 - `register.html` - форма регистрации
 - `profile.html` - профиль пользователя
 
5.2 Шаблоны восстановления пароля
- `password_reset.html` - запрос сброса
 - `password_reset_done.html` - подтверждение отправки
 - `password_reset_confirm.html` - установка нового пароля
 - `password_reset_complete.html` - завершение сброса
 - `password_reset_email.html` - шаблон email
 - `password_reset_subject.txt` - тема email
 
6. Представления (Views)
6.1 Классовые представления
class UserProfileView(LoginRequiredMixin, View): # Управление профилем
class RegisterView(View): # Регистрация пользователей
class CustomPasswordResetView(auth_views.PasswordResetView): # Сброс пароля
6.2 Функциональные представления
def login_view(request): # Обработка входа
7. Особенности реализации
7.1 Аутентификация
- Использование email как username
 - Кастомная форма входа
 - Сообщения об ошибках
 
7.2 Профиль пользователя
- Отображение даты регистрации
 - Редактирование личных данных
 - Валидация изменений
 
7.3 Восстановление пароля
- Отправка email
 - Временные ссылки
 - Подтверждение сброса
 
8. Безопасность
8.1 Защита
- CSRF токены
 - Хеширование паролей
 - Проверка прав доступа
 
8.2 Валидация
- Проверка email
 - Валидация паролей
 - Проверка уникальности
 
9. Интерфейс
9.1 Формы
- Стилизованные поля ввода
 - Валидация на стороне клиента
 - Сообщения об ошибках
 
9.2 Навигация
- Ссылки между формами
 - Редиректы после действий
 - Информативные сообщения
 
10. Интеграция
10.1 С системой
- Интеграция с Django Auth
 - Использование стандартных компонентов
 - Кастомизация шаблонов
 
10.2 С другими приложениями
- Связь с основными моделями
 - Использование в других приложениях
 - Общий контекст пользователя