Как ограничить пользователей своими активами при удалении контента - PullRequest
0 голосов
/ 18 марта 2019

Я написал небольшое приложение, которое содержит базу пользователей и присвоенные им активы. Теперь я пытаюсь написать функцию, которая будет удалять записи из базы данных только тогда, когда пользователь не назначен для ресурсов.

Загрузка активов

$http.get("/ewidencja/dbs/assets.php").then(function (response) {
  $scope.aktywa = response.data.records;  
});

Загрузка пользователей

$http.get("/ewidencja/dbs/users.php").then(function (response) {
  $scope.pracownicy = response.data.records;
});

Удалить функцию

$scope.usunUsera = function(s) {  
if (confirm("Na pewno?")) {
$http.post("/ewidencja/dbs/removeuser.php", {
  'id_pracownika': s
  }).then(function(response) {
    alert("Usunięto");
    }, function(error) {
      alert("Błąd! Dane nie dodane!");
      console.error(error);
    }); 
 } }

Я выбираю пользователей из опций:

<div class="col-sm-6">
    <h5>Usuń użytkownika</h5>
    <div class="form-group">
      <select ng-model="idPracownika" class="form-control" ng-options="ludzie.idPracownik as ludzie.NazwaPracownika for ludzie in pracownicy"><option value="" selected="selected">Wybierz</option></select>
    </div>
    <button class="btn btn-danger" ng-click="usunUsera(idPracownika)">Usuń użytkownika</button>
  </div>

removeuser.php

$data = json_decode(file_get_contents("php://input"));
$id = $data->id_pracownika;
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "DELETE FROM pracownicy WHERE id_pracownik='".$id."'";
if ($conn->query($sql) === TRUE) {
echo "Usunięto poprawnie";
} else {
echo "Błąd: " . $sql . "<br>" . $conn->error;
}
$conn->close();

Теперь я могу удалять пользователей из БД, даже если они назначены активам, но я бы хотел защитить это приложение от этого.

Можете ли вы помочь мне с этим делом? Спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 18 марта 2019

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

SELECT COUNT(*) FROM assets WHERE id_user = ?;

Затем вы можете сохранить этот результат в счетчике и использовать его, чтобы ограничить, может ли быть выполнена операция удаления или нет

if(counter==0){
  console.log("No items were deleted");
 }else{
 DELETE FROM....
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...