Jak autoryzować dostęp do funkcjonalności strony?

0

Jak przeprowadzić autoryzację użytkownika?

Utworzyłam tabelę. Mam w niej: login, hasło, uprawnienia(jako int).

Chciałam po pomyślnym porównaniu haseł i loginów pobierać z bazy uprawnienia i w zależności od liczby, przenieść na inną stronę.

Przykładowo jeśli ktoś ma uprawnienia ==1 to dostaje stronę admin.php gdzie może dodawać userów, usuwać etc. Jeśli ma 2 to jest magazynierem i może dodawać i odejmować ilość produktów w magazynie. Z kolei 3 to kucharka i ona może tylko przeglądać ile czego jest, zmienianie nie leży w jej kompetencji.

Czyli admin admin.php, magazynier magazynier.php, kucharka kucharka.php.

Każda strona jest bliźniacza co do wyglądu oferuję inną funkcjonalność. Na stronie kucharka.php nie ma guziczków aby dodać usunąć produkt i nie ma textboxów aby je wpisać. Na stronie magazynier.php są, z kolei nie ma informacji jakie dania i w jakiej ilości moze zrobić aw kucharka.php jest taka możliwość.

Wydaje mi się jednak że moje rozwiązanie, nie jest najlepsze: część treści zdublowanej. Jakie inne wady ma to rozwiązanie?

Może po prostu po udanym logowaniu Tworzyć stronę przez php? Jeśli 1 do taką jeśli 2 do taką etc. Za każdym razem sprawdzac uprawnienia i generować strony za pomocą php?

Jakie jest rozwiązanie które się aktualnie używa? Jakie jest najlepsze?

0

Miej jeden panel administracyjny i zależnie od uprawnień ukrywaj lub wyświetlaj poszczególną funkcjonalność.

0

Ja bym wykorzystał system szablonów i w zależności od tego jakie użytkownik ma uprawnienia wyświetlał odpowiedni dla niego szablon :)

0

Zrób uprawnienia na podstawie ról. Tworzysz 3 tabele
roles

  • rol_id
  • rol_name

permissions

  • perm_id
  • perm_name

roles_permissions

  • rol_id (fk)
  • perm_id (fk)

No i tabela users musi mieć kolumne rol_id.

Po zalogowaniu pobierasz:

SELECT
	rol_name
FROM
	roles_permissions
JOIN
	permissions
USING(perm_id)
WHERE
	rol_id = :rolID

Następnie w PHP budujesz tablicę z rol_name, i sprawdzasz czy ma uprawnienie do danej części

<?php
if($this->permissions->has("Magazyny::show"){
echo "Pokazujesz magazynyn";
}
?>

Taki system uprawnienia nie będą cie blokować, gdy dojdzie np. kolejny podmiot, np. sprzątaczka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1