Quando geres um site WordPress com um ambiente de Staging, fazer push das alterações para produção é um processo crítico. Garante que o teu site em produção se mantém consistente e funcional. No entanto, durante este processo, as sessões ativas de utilizadores do site de Staging podem persistir no ambiente de produção, o que pode representar riscos de segurança ou levar a comportamentos inesperados, como utilizadores a verem conteúdo antigo e desatualizado.
Para resolver isto, e para garantires que todos os utilizadores veem o site atualizado, podes terminar a sessão de todos os utilizadores automaticamente após fazer push do site de Staging para produção, usando um filtro WordPress personalizado. Isto garante que quaisquer dados de sessão do site de Staging são invalidados e os utilizadores têm de iniciar sessão de novo. Eis como implementar esta solução com o WP Staging.
Contents
O problema: persistência de sessões
Quando fazes push de um site de Staging para produção, os dados de sessão de utilizador, incluindo tokens de login, também são transferidos. Como resultado:
- Utilizadores do site de Staging podem manter-se com sessão iniciada no site em produção.
- Dados sensíveis podem ficar inadvertidamente acessíveis.
- Podem surgir riscos de segurança devido ao uso indevido de tokens.
A solução: usar um filtro personalizado para invalidar sessões de utilizador
Tirando partido da ação wpstg_pushing_complete fornecida pelo WP Staging, podes acionar uma função para invalidar todas as sessões ativas de utilizadores imediatamente após um push. Isto consegue-se eliminando os tokens de sessão guardados na base de dados WordPress.
Implementação do código
Eis o snippet de código para terminar a sessão de todos os utilizadores após push do site de Staging para produção:
/**
* Log out all users after pushing a staging site to production.
*/
function myPrefixinvalidateAllUsers()
{
// Access the global $wpdb object to interact with the database
global $wpdb;
// Cleanup session tokens from the usermeta table
$wpdb->query("DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'session_tokens'");
}
// Hook the function to WP Staging's 'wpstg_pushing_complete' action
add_action('wpstg_pushing_complete', 'myPrefixinvalidateAllUsers');
Como funciona
- Limpeza da base de dados:
A funçãomyPrefixinvalidateAllUsers()interage com a tabelausermetado WordPress para remover todos os registos associados à meta-keysession_tokens. Isto invalida efetivamente todas as sessões ativas dos utilizadores. - Acionar a ação:
O hookwpstg_pushing_completeé disparado quando o WP Staging conclui o processo de push de um site de Staging para produção. A função é executada automaticamente nesta fase. - Resultado:
Uma vez removidos os tokens de sessão, todos os utilizadores ficam com sessão terminada e têm de iniciar sessão de novo para aceder ao site em produção.
Passos para implementar
- Criar um Must-Use plugin (MU-Plugin):
- Navega até à pasta
wp-content/mu-plugins/do teu site em produção. Se a pasta não existir, cria-a. - Cria um novo ficheiro PHP, por exemplo
invalidate-user-sessions.php. - Copia e cola o snippet de código acima para esse ficheiro.
- Navega até à pasta
- Deploy:
- Guarda o ficheiro e garante que está enviado para a pasta
mu-plugins. - O WP Staging vai agora terminar sessão de todos os utilizadores automaticamente após cada push para produção.
- Guarda o ficheiro e garante que está enviado para a pasta
Benefícios
- Maior segurança: utilizadores do ambiente de Staging não podem aceder inadvertidamente ao site em produção.
- Mais controlo: garante que só utilizadores verificados podem iniciar sessão novamente após o deploy.
- Gestão simplificada: automatiza a gestão de sessões durante o processo de deploy.
Notas adicionais
- Esta solução aplica-se apenas à funcionalidade push-to-production do WP Staging. Não afeta outras funcionalidades WordPress nem sessões criadas posteriormente.
- Em configurações multisite, garante que o script corre em todos os sub-sites conforme necessário.
Com esta abordagem, podes manter um ambiente de produção seguro e fiável, garantindo uma transição suave do Staging para produção.