Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Gerenciamento de contas de usuários, funções, permissões, autenticação PHP e MySQL


Se você estiver criando qualquer aplicativo da Web que envolva criar, ler, atualizar e excluir informações de qualquer tipo, será muito comum que os privilégios para realizar essas diferentes operações nos dados tenham que ser compartilhados entre seus usuários de acordo com suas diferentes funções. e permissões em seu aplicativo.

Tome um aplicativo de gestão escolar, por exemplo. Os usuários desse aplicativo geralmente se enquadram nas categorias:Alunos, Professores, Chefes de Departamentos (HOD) e assim por diante. Sua inscrição NÃO deve permitir que um aluno tenha o privilégio de adicionar ou atualizar seus resultados para os exames do semestre. Essa seria a função de um Mestre. E quando um novo curso ou disciplina deve ser adicionado ao currículo, é trabalho apenas do Chefe de Departamento adicionar esse curso ao sistema.

Em tal sistema, podemos nos referir a Aluno, Professor, HOD (Chefe de Departamento) como os diferentes papéis em nosso aplicativo. Quanto a ações como adicionar e atualizar os resultados dos alunos, adicionar novos cursos, vamos nos referir a elas como permissões.

Da explicação até agora, já se pode deduzir que um usuário terá uma função e uma função terá várias permissões. Por exemplo, John (um usuário) terá uma função (Aluno) e várias Permissões (registrar curso, visualizar marcas, imprimir transcrição, etc).

Isso significa que em nosso banco de dados MySQL precisaremos de 3 tabelas de banco de dados principais:usuários, funções e permissões. Somos obrigados a ter um relacionamento muitos-para-um entre usuários e tabelas de banco de dados de funções (uma função pertence a muitos usuários) e um relacionamento muitos-para-muitos entre funções e tabelas de permissões (muitas permissões podem ser atribuídas a muitas funções) .

A maneira como você se refere a esses papéis fica a seu critério. Em nosso exemplo, usamos Student, Teacher, HOD para representar as funções porque o exemplo era sobre um aplicativo de gerenciamento escolar. Se você estava trabalhando em um aplicativo de gerenciamento de hotel, as funções podem ser algo como Gerente, Limpador, Recepcionista e similares.

Neste tutorial, estamos construindo um sistema de gerenciamento de contas de usuário para um aplicativo de blog. Portanto, vamos nos referir a essas funções como Autor, Editor e Administrador. Claro que você pode alterá-los como quiser, mas esses três são quase um padrão para sistemas de gerenciamento de conteúdo.

Um sistema completo de registro e login de administrador/usuário será implementado. Todos os usuários farão login através do mesmo formulário de login e, uma vez logados, apenas os usuários administrativos (autores, editores, administradores) terão acesso ao painel de administração, enquanto os usuários normais serão redirecionados para a página inicial pública.

Criaremos uma tabela de banco de dados de postagens em nosso banco de dados para ter algo para testar nossas permissões. Por exemplo, um usuário com a função de Editor poderá editar, atualizar, publicar, cancelar a publicação e excluir todas e quaisquer postagens, enquanto um Autor só terá permissão para criar, ler, atualizar e excluir apenas as postagens que foram criados por eles mesmos. O administrador terá permissão para criar, atualizar, excluir outros usuários e funções administrativos e também para atribuir/cancelar a atribuição de permissões a funções e funções a usuários.





NOTA:Já fiz um tutorial sobre como criar um aplicativo de blog completo do zero. Portanto, não implementaremos a criação, exclusão e atualização de postagens aqui. Vamos apenas demonstrar como essas permissões funcionam em torno das postagens. Se você quer aprender a criar um blog com posts, confira meu outro tutorial sobre como construir um blog em PHP.

Estrutura do diretório do projeto.


Crie uma pasta de projeto chamada user-accounts e depois crie outras três pastas dentro dela:admin, includes, assets, cada uma com as seguintes subpastas:



admin:Esta pasta contém o código-fonte para a parte administrativa do aplicativo. Nesta pasta, crie três outras pastas, a saber, postagens, funções, usuários.

assets:conterá arquivos públicos que serão acessados ​​pelo navegador, como imagens, css, js. Então, dentro de assets, crie pastas de imagens, css e js.

inclui:Isso conterá patches de código-fonte para nosso aplicativo que podemos incluir em diferentes locais em nosso aplicativo. Dentro desta pasta, crie duas outras pastas:layouts e logic.

Neste ponto, nossa estrutura de projeto está pronta. Agora podemos começar a codificar o sistema. Faremos isso na próxima parte deste tutorial.

Obrigado pela atenção e espero vê-lo na próxima parte.