Задать вопрос
humiliation
@humiliation
Чем больше знаю - тем больше дурак

Авторизация на сайте и права, как сделать?

Добрый день! Не так давно изучаю PHP, стараюсь писать хороший и поддерживаемый код. Сейчас я разрабатываю небольшую ЦРМ, основные части ее готовы, теперь я перешел к усложнению кода и переработке, так как мой код далек от идеального. Я самоучка, юниором сейчас устроиться проблема, более опытных наставников у меня нет, поэтому я к вам

Задача: модуль авторизации, проверки на вход, права доступа. Т.е. юзер1 не должен получить инфу от юзера2.

Что есть? Простая авторизация по связке логин-пароль, при обновлении страницы идет проверка на соответствие ид сессии к логину. Если нет сессии или не соответствует - выбрасывает на страничку логина. Записи имеют ключ сайта, логин имеет привязку к ключу.
Проблема возникла тогда, когда я тем же аяксом под логином сайта1 смог получить информацию сайта2. Понятное дело, что менеджеры интернет магазинов, с которыми я работаю, этого сделать не смогут, но мне это покоя не дает.

Вопрос: как определить права пользователей и не дать юзеру1 получить инфу юзера2. К чему привязываться, какие делать проверки, вводить переменные, как отойти от хардкода. Сейчас 3 юзера и все захардкодено в сессии, типа

if ($user1 == 'user1'){
$site = 'site.ru'};
  • Вопрос задан
  • 347 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
humiliation
@humiliation Автор вопроса
Чем больше знаю - тем больше дурак
Итак, кому интересно, я решил это так:

у юзера в таблице сразу прописаны права доступа ( в данном случае сайт или сайты).
этот ключ при логине помещается в переменную сессии, затем из бд вытаскиваются записи LIKE :site, где :site - тот самый ключ.
Доступ к другим сайтам запрещен через проверку во время извлечения -
isset($_POST['hidden']) && $permissions == 'root' && $_POST['hidden'] == 1. Пост нужен чтобы скрывать заказы в архив или прятать их с глаз. Без проверки на доступ постом можно было извлечь все спрятанные и не спрятанные записи.
Зелим Бельтоев советовал сделать во время записей проверку, я ее сделал чуть проще.
Отказавшись от метода выбора сайта постом у всех, кроме рута, я сразу решил и проблему доступа юзера1 к записям юзера2. Поэтому по его схеме сделана просто проверка при обновлении страницы. Ну вдруг что.

Всем спасибо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы