как запретить пользователю изменять / удалять другие пользовательские данные

#php #mysql #codeigniter #multi-user

#php #mysql #codeigniter #многопользовательский

Вопрос:

Я создаю многопользовательское приложение. создан с использованием php codeigniter, и я ищу наилучшую практику или лучший способ запретить пользователю изменять / удалять другие пользовательские данные.

У меня есть несколько реляционных таблиц.

  1. tbl_users (идентификатор пользователя, имя_пользователя, пароль)
  2. tbl_stores (store_id, user_id, store_name, store_url)
  3. tbs_products (product_id, store_id, product_name)

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

Итак, каковы наилучшие способы запретить пользователю удалять другие пользовательские данные?

На самом деле, я создал некоторый код в модели, но поскольку я в некотором роде новичок, я не уверен, что это правильный путь, мой код выглядит следующим образом.

 function remove_product($product_id)
{
    $this->db->from('products as p');
    $this->db->join('stores as s', 's.id = p.store_id');
    $this->db->where('p.id', $product_id);
    $this->db->where('s.user_id', $this->session->userdata('id'));

    if($this->db->count_all_results())
    {
        $this->db->where('id', $product_id);
        return $this->db->delete($this->table);
    }
}
  

Пожалуйста, сообщите, правильный ли этот подход или нет, или если есть лучший способ сделать это.

С уважением

Ответ №1:

Перед удалением чего-либо проверьте, совпадает ли владелец этого с пользователем сеанса.

Комментарии:

1. Спасибо за ответ, значит, для этого все еще нужны 2 запроса?

2. УДАЛИТЬ Из продуктов, ГДЕ … И userid = SESSIONUSER