Skip to content

Практическая работа №11

Реализация регистрации, авторизации и ролей пользователей

Section titled “Реализация регистрации, авторизации и ролей пользователей”

Цель работы:

  • реализовать регистрацию пользователей;
  • реализовать авторизацию и выход из системы;
  • использовать сессии для хранения состояния пользователя;
  • хранить пароли в безопасном виде;
  • разграничить доступ по ролям;
  • подготовить защиту личного кабинета и административной панели;

Основные теоретические положения

Section titled “Основные теоретические положения”

Регистрация и авторизация

Section titled “Регистрация и авторизация”

Регистрация создаёт учётную запись пользователя, а авторизация позволяет пользователю войти в систему.

Пароли нельзя хранить в открытом виде.

$passwordHash = password_hash($password, PASSWORD_DEFAULT);

Для проверки используется:

password_verify($password, $user['password']);

Сессии позволяют хранить данные пользователя между запросами:

session_start();
$_SESSION['user_id'] = $user['id'];
$_SESSION['role'] = $user['role'];

Минимальные роли проекта: гость, пользователь, администратор.


Производственная ситуация

Section titled “Производственная ситуация”

Вы уже подключили базу данных к PHP-проекту. Теперь необходимо реализовать систему пользователей, чтобы личный кабинет и административная панель были защищены.


Основные требования к практической работе

Section titled “Основные требования к практической работе”

В рамках практической работы необходимо:

  1. Реализовать регистрацию.
  2. Добавить серверную валидацию формы регистрации.
  3. Хранить пароль через password_hash.
  4. Реализовать авторизацию.
  5. Проверять пароль через password_verify.
  6. Реализовать выход из системы.
  7. Использовать сессии.
  8. Разграничить доступ по ролям.
  9. Защитить личный кабинет.
  10. Защитить административную часть.

Задания для выполнения

Section titled “Задания для выполнения”

Задание 1. Проверка таблицы пользователей

Section titled “Задание 1. Проверка таблицы пользователей”

Проверьте, что таблица users содержит поля id, name, email, password, role, created_at.

Задание 2. Форма регистрации

Section titled “Задание 2. Форма регистрации”

Сверстайте и обработайте форму регистрации: имя, email, пароль, подтверждение пароля.

Задание 3. Валидация регистрации

Section titled “Задание 3. Валидация регистрации”

Проверьте пустые поля, корректность email, совпадение паролей и уникальность email.

Задание 4. Сохранение пользователя

Section titled “Задание 4. Сохранение пользователя”

Сохраните пользователя в базу данных, пароль храните только через password_hash.

Задание 5. Форма авторизации

Section titled “Задание 5. Форма авторизации”

Реализуйте вход по email и паролю, пользователя ищите в БД через подготовленный запрос.

Задание 6. Проверка пароля

Section titled “Задание 6. Проверка пароля”

Используйте password_verify для проверки пароля.

Сохраняйте в сессию user_id, user_name, role.

Задание 8. Выход из системы

Section titled “Задание 8. Выход из системы”

Реализуйте страницу или обработчик выхода через session_destroy().

Задание 9. Функции доступа

Section titled “Задание 9. Функции доступа”

Создайте isAuth(), isAdmin(), requireAuth(), requireAdmin() в /src/helpers/auth.php.

Задание 10. Защита разделов

Section titled “Задание 10. Защита разделов”

Защитите личный кабинет через requireAuth(), а админку через requireAdmin().

Задание 11. Коммит результатов

Section titled “Задание 11. Коммит результатов”

Выполните коммит с сообщением add registration login and roles.


Требования к результату

Section titled “Требования к результату”

К завершению практической работы должны быть подготовлены:

  • регистрация пользователя;
  • серверная валидация регистрации;
  • хеширование паролей;
  • авторизация;
  • выход из системы;
  • работа с сессиями;
  • защита по ролям;
  • тестовый пользователь и администратор;
  • коммит с результатами работы;

  1. Почему нельзя хранить пароль в открытом виде?
  2. Для чего используется password_hash?
  3. Для чего используется password_verify?
  4. Что такое сессия?
  5. Как проверить, авторизован ли пользователь?
  6. Чем пользователь отличается от администратора?

Рекомендуемые материалы

Section titled “Рекомендуемые материалы”
  1. Требования к итоговому проекту.
  2. Дорожная карта учебной практики.
  3. Git-репозиторий индивидуального проекта.
  4. Документация, подготовленная на предыдущих этапах.
  5. Материалы по теме практической работы.