Arquitetura de Software envolve a organização e comunicação das partes de um sistema
Laravel é um framework de desenvolvimento web em PHP que segue o padrão de arquitetura MVC, o que significa que ele separa as partes principais de um site - como a lógica de como as coisas funcionam, a aparência visual e o armazenamento de informações - para que os desenvolvedores possam trabalhar de forma mais organizada. Ele também possui recursos úteis, como o Eloquent ORM, que ajuda a lidar com informações do banco de dados de maneira mais eficiente, e o sistema Blade de templates, que simplifica a criação da aparência das páginas.
MVC (Model-View-Controller) é um padrão de arquitetura de software amplamente utilizado no desenvolvimento de aplicativos, especialmente em desenvolvimento web. Ele divide um aplicativo em três componentes principais:
O Modelo é responsável por gerenciar os dados e a lógica de negócios do aplicativo. Ele representa o estado e a estrutura dos dados, bem como as operações que podem ser executadas neles. O Modelo não sabe sobre a interface do usuário ou como os dados são apresentados.
A Visualização é responsável por exibir os dados ao usuário. Ela representa a interface do usuário e a forma como as informações são apresentadas. A Visualização não lida com a lógica de negócios ou manipulação de dados.
O Controlador atua como intermediário entre o Modelo e a Visualização. Ele recebe as interações do usuário na interface do usuário, processa essas interações e atualiza o Modelo de acordo. Ele também pode ser responsável por direcionar as ações apropriadas a serem executadas no Modelo ou na Visualização.
O padrão MVC tem como objetivo separar as preocupações e promover a modularidade do código. Isso facilita a manutenção, a escalabilidade e a colaboração entre os desenvolvedores, pois cada componente tem uma função claramente definida. O Modelo lida com os dados, a Visualização lida com a apresentação e o Controlador lida com a lógica de coordenação.
O MVC é frequentemente usado em frameworks como Laravel (para PHP), Ruby on Rails (para Ruby), Django (para Python) e muitos outros, mas também pode ser aplicado manualmente em qualquer projeto que busque uma organização mais clara e eficiente do código.
Para esse exemplo, vou criar um novo projeto. Se você já possui um projeto e quer adicionar o login, recomendo fazer uma cópia ou, caso esteja usando o Git, criar uma branch para testar esse recurso.
#criar um projeto usando o Laravel Installer
laravel new autenticacao
#criar um projeto usando o composer
composer create-project laravel/laravel autenticacao
Abra o gerenciador do MySQL ou Postgres e crie um banco de dados com o nome que achar adequado. Neste exemplo estou usando o mesmo nome do projeto: autenticacao.
Abra o arquivo .env e ajuste as configurações do banco de dados, segundo o SGBD que de sua preferência:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=breeze_project
DB_USERNAME=root
DB_PASSWORD=password
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=breeze_project
DB_USERNAME=postgres
DB_PASSWORD=password
Agora vamos executar as migrations que já vem predefinidas para criar o schema do Banco de Dados. Note que o comando deve ser executando estando dentro da pasta do projeto.
php artisan migrate
Agora vamos instalar o pacote Breeze, ou seja, baixar as dependências necessárias, usando o seguinte comando:
composer require laravel/breeze --dev
Apesar das dependências estarem instaladas, a estrutura da autenticação, ou seja, views, controllers e outros elementos ainda não foram criados. Para isso, digite o seguinte comando:
php artisan breeze:install
O próximo passo é executar os comandos para baixar as dependências JS que, no caso do Breeze, usa o TailwindCSS para estilizar as páginas. Vejamos:
#baixa as dependências JS
npm install
#gera os arquivos CSS e JS otimizados
npm run dev
O comando npm run dev irá iniciar um servidor NPM. Basta fechá-lo.
Agora precisamos executar o servidor para verificar se realmente deu certo. Execute o seguinte comando:
php artisan serve
Quando alguém acessa a página inicial do seu site, a função anônima definida será executada, retornando uma visualização chamada 'welcome'. Isso é geralmente a página inicial padrão gerada pelo Laravel.
A função anônima definida será executada quando alguém acessar a URL '/dashboard'. Ela retornará uma visualização chamada 'dashboard'. No entanto, essa rota tem um middleware que verifica se o usuário está autenticado e verificado antes de permitir o acesso à visualização.
As próximas rotas são agrupadas sob o middleware 'auth'. Isso significa que todas essas rotas requerem que o
usuário esteja autenticado para acessá-las. Dentro desse grupo, você tem rotas relacionadas à edição,
atualização e exclusão do perfil do usuário. Elas apontam para métodos do ProfileController.
A última linha, require __DIR__.'/auth.php';, inclui um conjunto de rotas de autenticação
geradas automaticamente pelo Laravel. Essas rotas estão no arquivo auth.php no mesmo diretório
onde esse arquivo de rotas está localizado. Elas lidam com as funcionalidades padrão de autenticação, como
login, registro, recuperação de senha etc.