Integracja z WordPress dla autoryzacji
Druga część serii o integracji Logto z WordPress, skoncentrowana na autoryzacji.
Druga część serii o integracji Logto z WordPress, skoncentrowana na autoryzacji.
W poprzednim artykule omówiliśmy, jak zintegrować Logto do uwierzytelniania w WordPress. Ten artykuł, jako druga część, zagłębi się w proces autoryzacji, koncentrując się na systemie ról w WordPress i na tym, jak zaimplementować mapowanie ról z Logto, biorąc pod uwagę, że wtyczka, której używaliśmy w poprzednim artykule, nie oferuje bezpośrednio możliwości autoryzacji.
Stworzymy funkcję mapowania ról, która automatycznie przydziela role WordPress użytkownikom na podstawie ról dostarczanych przez Logto RBAC (Role-Based Access Control).
WordPress ma wbudowany system zarządzania rolami użytkowników, który określa jakie czynności (możliwości) użytkownik może wykonać na stronie. Domyślne role użytkowników obejmują Administratora, Redaktora, Autora, Współtwórcę i Abonenta, każdy z własnym zestawem możliwości
Te role są kluczowe dla utrzymania bezpieczeństwa i efektywności działania strony, ponieważ pomagają zapewnić, że użytkownicy mają odpowiednie poziomy dostępu na podstawie swoich obowiązków.
Logto korzysta z Role-Based Access Control (RBAC) jako swój model autoryzacji, wykorzystując "zakresy" jako najmniejszą jednostkę pozwolenia. Te zakresy definiują konkretne czynności, które uwierzytelniony użytkownik ma prawo wykonać w obrębie aplikacji. Jednak WordPress działa na innej zasadzie zarządzania uprawnieniami użytkowników, polegającej na predefiniowanych "rolach", które łączą różne możliwości.
Biorąc pod uwagę tę fundamentalną różnicę, sugerujemy tworzenie specjalnych ról w Logto, które odpowiadają rolom zdefiniowanym w WordPress. Te role mogą nie mieć żadnych zakresów, są wykorzystywane tylko jako punkt odniesienia do mapowania użytkowników na role WordPress.
Przed kontynuacją upewnij się, że masz:
Do implementacji mapowania ról dodamy niestandardowy kod do pliku functions.php motywu WordPress. Wymaga to użycia haczyka wp_login, który jest wyzwalany podczas logowania użytkownika. Oto krok po kroku, jak to zrobić:
Otwórz plik functions.php swojego motywu. Można uzyskać dostęp do tego pliku poprzez panel administratora WordPress, przechodząc do Wygląd > Edytor motywów i wybierając functions.php z listy plików po prawej stronie. Lub w kodzie źródłowym, przejdź do katalogu motywu WordPress i znajdź plik functions.php. Ten plik pozwala na dodanie niestandardowych funkcji PHP, które rozszerzają funkcjonalność witryny WordPress.
Poniżej znajduje się prosty przykład funkcji, którą możesz dodać do functions.php. Ta funkcja będzie wyzwalana podczas logowania użytkownika, i przydzieli role na podstawie roli roles podanej przez Logto.
Funkcja logto_handler: Ta funkcja przyjmuje dwa parametry: $user_login (nazwa użytkownika) i $user (obiekt użytkownika). Pobiera role z Logto, które są przechowywane w meta danych użytkownika jako openid-connect-generic-last-user-claim, mapuje tę rolę na odpowiednią rolę WordPress i przypisuje ją użytkownikowi.
add_action: Ta linia łączy funkcję logto_handler z akcją wp_login, która jest wyzwalana po zalogowaniu użytkownika. 10 to priorytet (domyślny), a 2 wskazuje liczbę argumentów akceptowanych przez funkcję.
Powyższy przykład przypisuje rolę 'editor' użytkownikom uwierzytelnianym przez Logto z nazwą roli group:editors. Jednak w prawdziwym scenariuszu, prawdopodobnie będziesz musiał zaimplementować więcej rodzajów mapowania ról.
Możesz znaleźć listę ról WordPress i ich możliwości tutaj.
Teraz przetestujmy funkcję mapowania ról, logując się za pomocą użytkownika, który ma rolę group:editors w Logto. Po zalogowaniu sprawdź rolę użytkownika w WordPress, aby upewnić się, że mapowanie działa poprawnie.
Integrując Logto z WordPress zarówno do uwierzytelniania, jak i autoryzacji, możesz zwiększyć bezpieczeństwo i funkcjonalność swojej strony. Pamiętaj, że podany tutaj kod jest tylko podstawowym przykładem, być może będziesz musiał go dostosować do struktury ról i uprawnień swojej strony WordPress.