Как дать отдельный доступ пользователю

 
Посетитель
small user social cms
Медаль
Сообщений: 624
Доброго времени суток друзья, я создал компонент, вот такой вопрос.
Есть форма заполнения на сайте и ее могут заполнять пользователи и админ, но редактировать только может админ
Нужно сделать так что бы пользователь который добавил данные только он может изменять эти данные, другие пользователи нет
Таблица базы данных одна.
Как сделать так что бы при добавление формы это числилось на счет уникального пользователя.

Мне нужно так что бы пользователь который создал форму, он мог ее сам редактировать, а там много пользователей они не должны редактировать чужие формы только свои.


Вот model.php
Спойлер

Вот action/add.php
Спойлер
Вот action/edit.php
Спойлер
Редактировалось: 2 раз (Последний: 28 апреля 2016 в 11:00)
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2572
Нико, вам надо добавить в свой компонент настройки управления правами http://docs.instantcms.ru/dev/controllers/backend/perms
Тогда вы сможете задавать, какие группы и что могут делать с записями: редактировать свои, или все, или вообще не смогут редактировать ничего.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 624
Zau4man:

Нико, вам надо добавить в свой компонент настройки управления правами http://docs.instantcms.ru/dev/controllers/backend/perms
Тогда вы сможете задавать, какие группы и что могут делать с записями: редактировать свои, или все, или вообще не смогут редактировать ничего.

Да, но я создаю компонент и мне надо сделать так что бы пользователь который создал форму попадала в базу что именно этот пользователь создал форму $user_id
Редактировалось: 1 раз (Последний: 28 апреля 2016 в 09:56)
Посетитель
small user social cms
Медаль
Сообщений: 624
Нико:

Zau4man:

Нико, вам надо добавить в свой компонент настройки управления правами http://docs.instantcms.ru/dev/controllers/backend/perms
Тогда вы сможете задавать, какие группы и что могут делать с записями: редактировать свои, или все, или вообще не смогут редактировать ничего.

Да, но я создаю компонент и мне надо сделать так что бы пользователь который создал форму попадала в базу что именно этот пользователь создал форму $user_id


Вот и сам код добавления формы. Мне нужно так что бы пользователь который создал форму, он мог ее сам редактировать, а там много пользователей они не должны редактировать чужие формы только свои.

Код PHP:
  1. <?php
  2. class actionStreetballAdd extends cmsAction {
  3. public function run(){
  4. $errors = false;
  5. $form = $this->getForm('battle');
  6. $is_submitted = $this->request->has('submit');
  7. $battle = $form->parse($this->request, $is_submitted);
  8. if ($is_submitted){
  9. $errors = $form->validate($this, $battle);
  10. if (!$errors){
  11. $battle_id = $this->model->addBattle($battle);
  12. $this->redirectToAction('battle', array($battle_id));
  13. }
  14.  
  15. if ($errors){
  16. cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
  17. }
  18. }
  19.  
  20. $template = cmsTemplate::getInstance();
  21. $template->render('form_battle', array(
  22. 'do' => 'add',
  23. 'form' => $form,
  24. 'errors' => $errors,
  25. 'battle' => $battle
  26. ));
  27. }
  28. }
Редактировалось: 1 раз (Последний: 28 апреля 2016 в 10:09)
Посетитель
small user social cms
Медаль
Сообщений: 624
Вот model.php
Спойлер

Вот action/add.php
Спойлер
Вот action/edit.php
Спойлер
Редактировалось: 6 раз (Последний: 28 апреля 2016 в 11:00)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
Нико, Zau4man вам ответил как нужно делать)) описываю краткую последовательность действий (подробно читайте по ссылке выше)

1. В БД добавляете две записи в таблицу cms_perms_rules (cms - ваш префикс):
controller - streetball, name - add, type - flag
controller - streetball, name - edit, type - list, options - own,all

2. Тут зависит от ваших потребностей, но для простоты в action/add.php дописываете после 19 строки:
Код PHP:
  1. $errors = $form->validate($this, $battle);
  2. $errors = $errors && !cmsUser::isAllowed('streetball', 'add');
или можно реализовать логику до if ($is_submitted){...} делать проверку

также прописываем в action/edit.php вместо
Код PHP:
  1. if (!cmsUser::isAdmin()) { cmsCore::error404(); }
строки
Код PHP:
  1. $user = cmsUser::getInstance();
  2. $is_edit = $user->is_admin || cmsUser::isAllowed('streetball', 'edit', 'all') ||
  3. ( cmsUser::isAllowed('streetball', 'edit', 'own') && $battle['user_id']==$user->id );
  4.  
  5. if (!$is_edit) { cmsCore::error404(); }
$battle = ... и if (!$battle) {...} ставим перед $is_edit

3. Прописываете необходимые языковые константы. Если админка для компонента не активирована - включаете ее (is_backend = 1). Прочие тонкости читайте в приведённой ссылке и настраивайте под себя.
При тестировании не забудьте установить разрешения в админке кому что можно))

После этого добавлять заполнять формы смогут только те группы пользователей которым вы это разрешите, редактировать уже созданные формы также можно будет только по установкам из админки (обычно это - "только свои" для рядовых пользователей и "все" для модераторов и администраторов).
Редактировалось: 2 раз (Последний: 4 мая 2016 в 23:42)
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2572
Val, спасибо. Не было времени расписать подробнее.
ТС советую посмотреть видео уроки http://docs.instantcms.ru/dev/video
Потратите часа 3 времени, но зато там все подробно разобрано на примере работающего компонента Фотоальбомы.

Я учился по этим видео.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
Zau4man, поддерживаю! Также изучил видео предоставленное r2 и начал потихоньку кодить)) В видео момент с правами пользователей также описывается и показывается.

Нико, удачи!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.