PHPackages                             faceauth/laravel-face-auth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. faceauth/laravel-face-auth

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

faceauth/laravel-face-auth
==========================

Laravel package for facial authentication using FaceAPI.

020Blade

Since Jul 9Pushed 10mo agoCompare

[ Source](https://github.com/ReinaldoJunior96/laravel-face-auth)[ Packagist](https://packagist.org/packages/faceauth/laravel-face-auth)[ RSS](/packages/faceauth-laravel-face-auth/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel FaceAuth Package
========================

[](#laravel-faceauth-package)

Reconhecimento facial plug-and-play para autenticação automática de usuários em projetos Laravel.

Recursos
--------

[](#recursos)

- Login automático via reconhecimento facial (face-api.js)
- Modal de autenticação facial em tempo real
- Suporte a múltiplas imagens por usuário (1 a 5)
- Publicação automática de assets, modelos, views e config
- Rotas, controllers e assets prontos para uso
- Segurança: rate limiting, nomes de arquivos aleatórios, dados sensíveis ocultos

---

Instalação
----------

[](#instalação)

### 1. Instale o package via Composer

[](#1-instale-o-package-via-composer)

```
composer require faceauth/laravel-face-auth
```

### 2. Publique os assets, migrations, views, models e config

[](#2-publique-os-assets-migrations-views-models-e-config)

O comando abaixo publica tudo de uma vez (recomendado):

```
php artisan vendor:publish --provider="FaceAuth\\FaceAuthServiceProvider"
```

Se quiser publicar apenas partes específicas:

- Apenas assets e modelos: ```
    php artisan vendor:publish --tag=faceauth-assets --force
    ```
- Apenas migrations: ```
    php artisan vendor:publish --tag=faceauth-migrations
    ```
- Apenas config: ```
    php artisan vendor:publish --tag=faceauth-config
    ```

### 3. Execute as migrations

[](#3-execute-as-migrations)

```
php artisan migrate
```

### 4. Configure o caminho das imagens e prefixo das rotas

[](#4-configure-o-caminho-das-imagens-e-prefixo-das-rotas)

O caminho definido em `FACEAUTH_USERS_IMAGE_PATH` deve ser o diretório onde ficarão as pastas dos usuários com as fotos cadastradas. Exemplo:

```
FACEAUTH_USERS_IMAGE_PATH=storage/app/private
FACEAUTH_ROUTE_PREFIX=faceauth # (opcional, para customizar o prefixo das rotas)
```

Se necessário, ajuste também em `config/faceauth.php`.

> **Importante:**
>
> - O diretório definido em `FACEAUTH_USERS_IMAGE_PATH` será usado para armazenar as fotos dos usuários, cada usuário terá uma pasta com suas imagens.
> - Garanta que esse diretório seja gravável pelo PHP e não esteja acessível diretamente pelo navegador.

### 5. Permissões de pasta

[](#5-permissões-de-pasta)

Garanta que o diretório definido em `FACEAUTH_USERS_IMAGE_PATH` seja gravável pelo PHP.

### 6. Adicione o botão de login facial na view desejada

[](#6-adicione-o-botão-de-login-facial-na-view-desejada)

Inclua o blade onde quiser exibir o botão/modal:

```
@include('faceauth::face-login-button')
```

### 7. Garanta o meta CSRF no seu layout principal

[](#7-garanta-o-meta-csrf-no-seu-layout-principal)

No `` do seu layout principal (ex: `resources/views/layouts/app.blade.php`):

```

```

### 8. Ajuste o formulário de cadastro para múltiplas imagens

[](#8-ajuste-o-formulário-de-cadastro-para-múltiplas-imagens)

No seu formulário de cadastro:

```

```

No controller, aceite de 1 a 5 imagens (veja exemplo no código do package). Cada imagem será salva com nome aleatório/hash.

---

Como cadastrar usuários com fotos para reconhecimento facial
------------------------------------------------------------

[](#como-cadastrar-usuários-com-fotos-para-reconhecimento-facial)

Para que o login facial funcione, é obrigatório que cada usuário tenha pelo menos 1 foto cadastrada (máximo 5). O upload dessas imagens deve ser feito no momento do cadastro do usuário no seu sistema.

### Exemplo de formulário de cadastro

[](#exemplo-de-formulário-de-cadastro)

```

    @csrf

    Cadastrar

```

### Exemplo de código backend (Controller)

[](#exemplo-de-código-backend-controller)

```
public function register(Request $request)
{
    $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:3',
        'face_image' => 'required|array|min:1|max:5',
        'face_image.*' => 'image|max:2048',
    ]);

    DB::transaction(function () use ($request) {
        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);

        foreach ($request->file('face_image') as $file) {
            $hashName = md5(uniqid() . microtime(true)) . '.' . $file->getClientOriginalExtension();
            $path = $file->storeAs("users/{$user->id}", $hashName, 'local');
            DB::table('faceauth_faces')->insert([
                'user_id' => $user->id,
                'face_image' => $path,
                'created_at' => now(),
                'updated_at' => now(),
            ]);
        }
    });

    // ... restante do fluxo
}
```

> **Importante:**
>
> - O cadastro de fotos é obrigatório para o reconhecimento facial funcionar.
> - Adapte o exemplo acima conforme a estrutura da sua tabela de usuários.
> - O package não altera sua tabela de usuários, apenas utiliza a tabela `faceauth_faces` para armazenar as imagens.

---

Fluxo de uso
------------

[](#fluxo-de-uso)

1. Usuário acessa o botão/modal de login facial
2. O sistema reconhece o rosto em tempo real
3. Se reconhecido, faz login automático e redireciona para o dashboard

---

Segurança e Boas Práticas
-------------------------

[](#segurança-e-boas-práticas)

- As rotas do package já usam middleware `web` e rate limiting (10 req/min).
- Os endpoints não expõem dados sensíveis, apenas identificadores genéricos.
- Os arquivos de imagem são salvos com nomes aleatórios/hash.
- Não exponha o diretório de imagens diretamente via webserver.
- Se desejar, proteja a rota de imagens para exigir autenticação.
- Para debug, veja os logs em `storage/logs/laravel.log`.

---

Customização
------------

[](#customização)

- O prefixo das rotas pode ser alterado via `.env` ou `config/faceauth.php`.
- O caminho das imagens pode ser alterado via `.env` ou `config/faceauth.php`.

---

Contribuição
------------

[](#contribuição)

Pull requests são bem-vindos! Abra uma issue para sugestões ou bugs.

---

Licença
-------

[](#licença)

MIT

---

**Desenvolvido com ❤️ para facilitar o login facial no Laravel!**

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance39

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/812dec3d96431e6c66c546d309dd5b019a44afe89056a3e682a7c8b6e7dc57a1?d=identicon)[ReinaldoJunior96](/maintainers/ReinaldoJunior96)

---

Top Contributors

[![ReinaldoJunior96](https://avatars.githubusercontent.com/u/33222779?v=4)](https://github.com/ReinaldoJunior96 "ReinaldoJunior96 (22 commits)")

### Embed Badge

![Health badge](/badges/faceauth-laravel-face-auth/health.svg)

```
[![Health](https://phpackages.com/badges/faceauth-laravel-face-auth/health.svg)](https://phpackages.com/packages/faceauth-laravel-face-auth)
```

###  Alternatives

[namshi/jose

JSON Object Signing and Encryption library for PHP.

1.8k99.6M101](/packages/namshi-jose)[league/oauth1-client

OAuth 1.0 Client Library

99698.8M106](/packages/league-oauth1-client)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[gesdinet/jwt-refresh-token-bundle

Implements a refresh token system over Json Web Tokens in Symfony

70516.4M35](/packages/gesdinet-jwt-refresh-token-bundle)[league/oauth2-google

Google OAuth 2.0 Client Provider for The PHP League OAuth2-Client

41721.2M118](/packages/league-oauth2-google)[illuminate/auth

The Illuminate Auth package.

9327.3M1.0k](/packages/illuminate-auth)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
