Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение администратора среди пользователей, Чем отличается админ с т.з. кода 
:(
    Опции темы
zero50x
Дата 28.4.2014, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 13.4.2007
Где: Нижний Новгород

Репутация: нет
Всего: 0



Только что закончил регистрацию и авторизацию на сайте для всех желающих.
Таблица пользователей в БД: id, логин, пароль, дата регистрации.

Хочу сделать пользователя администратора. Определить что это админ можно по логину, если логин=admin то...

Вопрос в другом: как с точки зрения программирования администратор наделяется любыми привилегиями?
У меня была мысль что в БД добавляется ещё одно поле, неважно пусть "adm" и пользователь у которого стоит в этом поле "1" считается администратором. Потом происходит проверка, например юзер пытается удалить статью другого юзера, проверка если adm у первого юзера = 1 то статья удаляется, если нет то статья остаётся нет прав.

Вообще где и что почитать про права пользователей, владение пользователей теми или иными объектами, какие функции или группы функций за это отвечают?
PM MAIL   Вверх
Sanchezzz
Дата 28.4.2014, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Цитата

Вопрос в другом: как с точки зрения программирования администратор наделяется любыми привилегиями?
У меня была мысль что в БД добавляется ещё одно поле, неважно пусть "adm" и пользователь у которого стоит в этом поле "1" считается администратором. Потом происходит проверка, например юзер пытается удалить статью другого юзера, проверка если adm у первого юзера = 1 то статья удаляется, если нет то статья остаётся нет прав.



Существует много вида извращенств, но наверное самое интересное и мало где применимое это
Группы ролей + Бизнес правила (RBAC), можно конечно использовать все по отдельности.

Если вам будет достаточно 1-2 ролей на сайте то смело делайте доп поля в таблице.

Нормализовать данные потом в что то серьезное не составит труда 


Это сообщение отредактировал(а) Sanchezzz - 29.4.2014, 00:27


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
zero50x
Дата 28.4.2014, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 13.4.2007
Где: Нижний Новгород

Репутация: нет
Всего: 0



Это была просто моя нубская догадка.
А вопрос: расскажите или дайте ссылку как это надо делать, как это правильно и логично сделать?

Sanchezzz поправьте пожалуйста сообщение вы вместо цитаты тег php использовали и вёрстка поехала от этого.

Это сообщение отредактировал(а) zero50x - 28.4.2014, 22:39
PM MAIL   Вверх
ksnk
Дата 29.4.2014, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



zero50x, Я бы делал полную схему прав, по крайней мере, с точки зрения "программирования сверху".

Так, чтобы это выглядело примерно так
Код

** @var User $user  -  зарегистрированный юзер */
$user = $application->get('USER')->getCurrentUser();
/** @var Article $article - статья с которой работаем */
$article =  $application->get('ARTICLE')->get($articleId);

if ($user->hasRight(User::DELETE, $article)) {
    $article->deleteArticle();
}


В зависимости от настроения и пожеланий заказчика - метод hasRight рудиментируется в наличной реализации до проверки админ или не админ.

Для сравнения - тот же код в Yii
Код

if(Yii::app()->user->checkAccess('deletePost'))
{
    // удаляем запись
}

Вообще говоря, в Yii'шной реализации отсутствует потенциальная возможность хозяину поста удалить собственный пост, а в моем случае, с передачей объекта в параметр функции проверки, потенциальная возможность есть.

Начать читать можно с документации по Yii. Роли можно называть также и "группами пользователей". Особой разницы нет.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
zero50x
Дата 29.4.2014, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 13.4.2007
Где: Нижний Новгород

Репутация: нет
Всего: 0



Спасибо, направление дали, я тут почитал, информации мало но обрывки находятся.
Многие предлагают всё же в БД делать поле права и там например 1, 2, 3, 4. Далее в системе при каком-то действии проверяется имеется ли нужная отметка у этого пользователя?

Кстати первый код у вас с применением ООП написан, я смысл понял, но пока им не владею.

Да я уже натыкался на информацию о том, что на фреймворках это сделать намного проще, но я новичёк и пока ими не владею.
PM MAIL   Вверх
ksnk
Дата 29.4.2014, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



zero50x, Совсем без ООП делать большую систему довольно грустно. Переделывать ее придется всю сразу и неясно где и как.

Можно, конечно, упростить.
Завести 4 группы пользователей - админы, модераторы, юзеры, анонимусы (3,2,1,0). 
В таблице юзеров завести поле с индексом группы. Для системы комментариев права расставляются естественным образом - 
право на чтение имеют анонимусы++
право на добавление записи имеют юзеры++
право на изменение всех записей имеют модераторы++
Ну и админ имеет уникальное право изменять юзерам группу.

Немножко жестко, но для всего одного поля в таблице - достаточно большие возможности.

Это сообщение отредактировал(а) ksnk - 29.4.2014, 11:20


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.