Integrando com o WordPress para Autorização
A segunda parte da série sobre a integração do Logto com o WordPress, focando na autorização.
No artigo anterior, discutimos como integrar o Logto para autenticação no WordPress. Este artigo, como segunda parte, abordará o processo de autorização, focando no sistema de funções no WordPress e como implementar o mapeamento de funções com o Logto, dado que o plug-in que usamos no artigo anterior não fornece capacidades de autorização diretamente.
Criaremos uma função de mapeamento de funções que automaticamente atribui funções do WordPress aos usuários com base em suas funções fornecidas pelo Logto RBAC (Controle de Acesso Baseado em Funções).
Entendendo as funções de usuário do WordPress
WordPress possui um sistema de gerenciamento de funções de usuário embutido que define quais ações (capabilities) um usuário pode realizar em um site. As funções de usuário padrão incluem Administrador, Editor, Autor, Colaborador e Assinante, cada uma com seu próprio conjunto de capacidades.
Essas funções são cruciais para manter a segurança e a eficiência das operações do site, pois ajudam a garantir que os usuários tenham níveis de acesso adequados com base em suas responsabilidades.
A solução: mapeamento de funções personalizado
Logto emprega Controle de Acesso Baseado em Funções (RBAC) como seu modelo de autorização, utilizando "escopos" como a menor unidade de permissão. Esses escopos definem as ações específicas que um usuário autenticado tem permissão para realizar dentro de um aplicativo. No entanto, o WordPress opera em um princípio diferente para gerenciar as permissões do usuário, contando com "funções" predefinidas que agrupam várias capacidades juntas.
Dada essa diferença fundamental, sugerimos a criação de funções especiais dentro do Logto que correspondam às funções definidas no WordPress. Essas funções podem não ter nenhum escopo, elas são usadas apenas como referência para mapear usuários para funções do WordPress.
Pré-requisitos
Antes de prosseguir, certifique-se de que você tem o seguinte:
- Concluir o artigo anterior sobre a integração do Logto com o WordPress para autenticação, isso inclui:
- Um site WordPress com acesso de administrador.
- Uma conta Logto com um aplicativo configurado para o seu site WordPress.
- O plugin OpenID Connect Generic instalado e configurado no seu site WordPress.
- Configurar funções no Logto que correspondam às funções no WordPress. Por exemplo, se você tem uma função 'editor' no WordPress, crie uma função 'group: editors' no Logto.
Implementando o mapeamento de funções com código personalizado
Para implementar o mapeamento de funções, adicionaremos código personalizado ao arquivo functions.php
do tema do WordPress. Isso envolve o uso do gancho de ação wp_login
, que é acionado quando um usuário faz login. Aqui está um guia passo a passo sobre como configurar isso:
Passo 1: acesse o functions.php do seu tema
Abra o arquivo functions.php
do seu tema. Você pode acessar este arquivo através do painel de administração do WordPress, navegando até Aparência > Editor de Tema e selecionando functions.php
na lista de arquivos à direita. Ou no código fonte, navegue até o diretório do seu tema WordPress e localize o arquivo functions.php
. Este arquivo permite que você adicione funções PHP personalizadas que estendem a funcionalidade do seu site WordPress.
Passo 2: escreva a função de mapeamento de funções
Abaixo está um exemplo simples de uma função que você pode adicionar ao functions.php. Esta função será acionada ao usuário fazer login, e atribuirá funções com base na reivindicação roles
do usuário obtida do Logto.
Passo 3: entender o código e personalizá-lo
-
Função
logto_handler
: esta função leva dois parâmetros:$user_login
(usuário) e$user
(objeto de usuário). Ela recupera as funções do Logto que estão armazenadas no meta do usuário comoopenid-connect-generic-last-user-claim
, mapeia essa função para uma função correspondente do WordPress e a atribui ao usuário. -
add_action
: esta linha conecta a funçãologto_handler
à açãowp_login
, que é acionada após um usuário fazer login. O10
é a prioridade (padrão), e o2
indica a quantidade de argumentos que a função aceita.
O exemplo acima atribui a função 'editor' aos usuários autenticados via Logto com o nome da função group:editors
. No entanto, em um cenário real, é provável que você precise implementar mais tipos de mapeamentos de funções.
Você pode encontrar a lista de funções do WordPress e suas capacidades aqui.
Passo 4: teste sua configuração
Agora, vamos testar a função de mapeamento de funções fazendo login com um usuário que tem a função group:editors
no Logto. Depois de fazer o login, verifique a função do usuário no WordPress para garantir que o mapeamento está funcionando corretamente.
Conclusão
Ao integrar o Logto com o WordPress para autenticação e autorização, você pode melhorar a segurança e a funcionalidade do seu site. Lembre-se, embora o código aqui fornecido seja um exemplo básico, você pode precisar adaptá-lo para se adequar à estrutura de funções e permissões do seu site WordPress.