Laravel Authentication

Laravel
Tempo de leitura: 4 minutos

Laravel Authentication: A autenticação é um pilar fundamental em qualquer aplicação web, garantindo que apenas usuários autorizados possam acessar recursos sensíveis. O Laravel oferece um sistema de autenticação robusto e flexível, que simplifica a implementação de funcionalidades como login, registro e logout.

Neste artigo, vamos explorar as principais características da autenticação no Laravel, com foco em APIs e exemplos práticos.

Autenticação Manual de Usuários

O Laravel permite que você tenha controle total sobre o processo de autenticação. Ao invés de utilizar recursos pré-configurados, você pode criar sua própria lógica de autenticação.

PHP

use Illuminate\Support\Facades\Auth;
use App\Models\User;

$credentials = request()->only('email', 'password');

if (Auth::attempt($credentials)) {
    $user = User::where('email', $request->email)->first();
    // Verifique se o usuário está ativo e se possui as permissões necessárias
    if ($user->isActive() && $user->hasPermissionTo('access-dashboard')) {
        return redirect()->intended('dashboard');
    }
} else {
    // Credenciais inválidas
    return back()->withErrors(['email' => 'As credenciais fornecidas são inválidas.']);
}

Neste exemplo, estamos verificando manualmente as credenciais do usuário e, caso estejam corretas, verificamos se o usuário está ativo e possui as permissões necessárias para acessar o painel.

Logout

Para deslogar um usuário, utilize o método logout da Facade Auth:

PHP

Auth::logout();
return redirect('/');

Confirmação de Senha

O Laravel oferece um mecanismo para forçar a troca de senha após um determinado número de tentativas falhas ou após um período de tempo. Para configurar a confirmação de senha, você pode utilizar as opções de configuração do arquivo config/auth.php.

PHP

'password' => [
    'attempt' => [
        'password' => 'bcrypt', // Algoritmo de hash
        'cost' => [
            'bcrypt' => env('PASSWORD_BCRYPT_COST', 10),
        ],
    ],
    'reminders' => [
        'email' => 'auth.passwords.email',
        'table' => 'password_resets',
        'expire' => 60,
    ],
],

Autenticação Social

O Laravel facilita a integração com provedores de autenticação social como Google, Facebook e Twitter. Após configurar os provedores no arquivo config/services.php, você pode redirecionar o usuário para o provedor e, após a autenticação, redirecioná-lo de volta para sua aplicação.

PHP

'services' => [
    'google' => [
        'client_id' => 'seu_client_id',
        'client_secret' => 'sua_client_secret',
        'redirect' => 'http://seusite.com/auth/google/callback',
    ],
],
  • client_id: O ID do cliente do seu aplicativo Google.
  • client_secret: A chave secreta do seu aplicativo Google.
  • redirect: A URL de callback da sua aplicação para onde o usuário será redirecionado após a autenticação no Google.
  • Criando as Rotas:

PHP

use Illuminate\Support\Facades\Route;
use Laravel\Socialite\Facades\Socialite;

Route::get('auth/google', 'Auth\GoogleController@redirectToProvider');
Route::get('auth/google/callback', 'Auth\GoogleController@handleProviderCallback');
  • Criar o controlador:

PHP

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Laravel\Socialite\Facades\Socialite;
use App\Models\User; // Substitua por seu modelo de usuário

class GoogleController extends Controller
{
    public function redirectToProvider()
    {
        return Socialite::driver('google')->redirect();
    }

    public function handleProviderCallback()
    {
        $user = Socialite::driver('google')->user();

        // Verifique se o usuário já existe na sua base de dados
        $existingUser = User::where('google_id', $user->id)->first();

        if($existingUser){
            // Autentique o usuário existente
            auth()->login($existingUser, true);
        } else {
            // Crie um novo usuário
            $newUser = User::create([
                'name' => $user->name,
                'email' => $user->email,
                'google_id' => $user->id,
                // ... outros campos
            ]);

            auth()->login($newUser);
        }

        return redirect()->to('/home');
    }
}
  • redirectToProvider: Redireciona o usuário para a página de autenticação do Google.
  • handleProviderCallback: Recebe o usuário autenticado do Google e verifica se ele já existe na sua base de dados. Se existir, autentica o usuário existente. Caso contrário, cria um novo usuário.

Conclusão

Laravel Authentication: O sistema de autenticação do Laravel oferece uma base sólida para construir aplicações seguras e confiáveis. Com as ferramentas e recursos disponíveis, você pode implementar diferentes tipos de autenticação, desde a autenticação básica por email e senha até a autenticação social.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi