PHPackages                             gabogalro/auth-library - 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. gabogalro/auth-library

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

gabogalro/auth-library
======================

Generate tokens library for PHP authentication.

v2.1.1(6mo ago)015MITPHPPHP &gt;=7.4

Since Oct 13Pushed 6mo agoCompare

[ Source](https://github.com/EduardoGalindo25/auth-library)[ Packagist](https://packagist.org/packages/gabogalro/auth-library)[ RSS](/packages/gabogalro-auth-library/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (7)Used By (0)

🚀 gabogalro/auth-library
========================

[](#-gabogalroauth-library)

- Libreria para generar tokens de autorización en headers que permite una protección de rutas adecuada.

Instalación
-----------

[](#instalación)

```
composer require gabogalro/auth-library

```

Guia de uso
-----------

[](#guia-de-uso)

- para que funcione correctamente esta libreria necesitas ejecutar los siguientes scripts

```
-- tabla de tokens para auth MySQL
create table tokens(
id_token int auto_increment primary key,
id_usuario int not null,
token varchar(255) not null unique,
fingerprint char(64) null,
created_at datetime,
expires_at datetime,
is_active bool
);

-- procedimiento almacenado necesario para el funcionamiento
CREATE PROCEDURE `sp_generate_token`(
in p_id_usuario int,
in p_token varchar(255),
in p_fingerprint char(64),
in p_expires_at datetime
)
begin
	declare p_id_token int;
	insert into tokens(id_usuario, token, fingerprint,created_at, expires_at, is_active)
	values(p_id_usuario, p_token, p_fingerprint ,now(), p_expires_at, 1);

	set p_id_token = LAST_INSERT_ID();
	select p_id_token as id_token;
END

-- procedimiento almacenado necesario para validar

CREATE PROCEDURE `sp_validate_token`(
in p_id_token int
)
begin

	select t.token, t.fingerprint
	from tokens t
	where t.id_token = p_id_token
	and t.is_active = 1
	and t.expires_at > now();
END

```

#### Ejemplo de generacion de token en un login

[](#ejemplo-de-generacion-de-token-en-un-login)

```
use Exception;
use gabogalro\SQLHelpers\DB; // -> libreria para el uso de SQL
use gabogalro\Token\Token;

 public function login($request)
    {
        try {
            $user_data = [
                'email' => $request['email'],
                'password' => $request['password']
            ];
            if (empty($user_data['email']) || empty($user_data['password'])) {
                throw new Exception('Email y contraseña son obligatorios');
            }
            $result = DB::selectOne('call sp_login(?)', $user_data['email']); //-> parte de la libreria SQL
            if (!empty($result)) {
                $user = $result;
                if (password_verify($user_data['password'], $user['password'])) {
                    $token = Token::generate_token($user['id_usuario']); // -> generamos el token aqui en base al id_usuario
                } else {
                    throw new Exception('Credenciales invalidas');
                }
            } else {
                throw new Exception('Usuario inexistente');
            }
            return [
                'token' => $token,
                'id_usuario' => $user['id_usuario']
            ];
        } catch (Exception $ex) {
            throw new Exception($ex->getMessage());
        }
    }

```

#### Ejemplo de validacion de token en middleware personalizado

[](#ejemplo-de-validacion-de-token-en-middleware-personalizado)

```
