PHP code example of wappcode / gql-pdss-auth

1. Go to this page and download the library: Download wappcode/gql-pdss-auth library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

wappcode / gql-pdss-auth example snippets


    // archivo config/doctrine.entities.php

    

    return  [
        // ...
        "GPDAuth\Entities" => __DIR__ . "/../vendor/wappcode/gql-pdss-auth/GPDAuth/src/Entities"
        // ...
    ];


// config/local.config.php



use GPDAuth\Library\AuthConfig;
use GPDAuth\Library\IAuthService;

return [
    // configuración de otros módulos
    // .....
    AuthConfig::JWT_SECURE_KEY => "secret_key",
    AuthConfig::AUTH_SESSION_KEY => "gpd_auth_session_key", // key o indice asociativo del array $_SESSION para authentificación
    AuthConfig::JWT_EXPIRATION_TIME_KEY => 1200, // Tiempo en segundos
    AuthConfig::JWT_ALGORITHM_KEY => 'HS256',
    AuthConfig::AUTH_METHOD_KEY => IAuthService::AUTHENTICATION_METHOD_SESSION_OR_JWT,
    AuthConfig::AUTH_ISS_KEY => $_SERVER["SERVER_NAME"] ?? "localhost",
    AuthConfig::JWT_ISS_CONFIG => [
        // se agregan los datos de los iss usando el nombre como clave
        "https://issurl" => [  //  url o id del iss
            AuthConfig::JWT_SECURE_KEY => "secure_key_to_iss",// opcional si no esta definido utiliza la clave de la configuración local
            AuthConfig::JWT_ALGORITHM_KEY => "HS256", // opcional si no esta definido utiliza el algoritmo de la configuración local
            AuthConfig::AUTH_ISS_ALLOWED_ROLES => [ // array con los roles permitidos para el iss  se permite el mapeo de un rol del iss a uno del sistema
                "iss_admin_role" => "admin",
                "custom_role" => "custom_role"
            ]
        ]
    ]
    // .....
];

// public/index.php


//...
use GPDAuth\GPDAuthModule;
//...
$app->addModules([
    GPDAuthModule::class, // se agrega módulo de autentificación
    // Otros módulos
    //...
    AppModule::class,
]);
//...



//...

$auth = $this->context->getServiceManager()->get(AuthService::class);
// Revisa si el usuario esta firmado
$auth->isSigned();


$auth->hasPermission("resource_post","VIEW"); // retorna true si el usuario tiene permiso para ver post sin importar el scope

$auth->hasPermission("resource_post","VIEW","OWNER"); // retorna true si el usuario tiene permiso para ver post pero con scope OWNER

$auth->hasPermission("resource_post","VIEW","ALL"); // retorna true si el usuario tiene permiso para ver post pero con scope ALL



//...
$auth = new AuthService(
                        $entityManager,
                        $_SERVER["SERVER_NAME"] ?? "localhost",
                        "JWT", // o SESSION
                    );

$auth->setJwtAlgoritm("HS256");
$auth->setjwtExpirationTimeInSeconds(1200);// En segundos
$auth->setJwtSecureKey("secret_key");
$auth->initSession();

//...