PHP code example of kuantaz / sso-client

1. Go to this page and download the library: Download kuantaz/sso-client 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/ */

    

kuantaz / sso-client example snippets



// bootstrap/app.php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Foundation\Configuration\Exceptions;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })
    ->withAliases([
        'Sso' => Mds\SsoClient\Facades\Sso::class,
    ])
    ->create();

// config/app.php
'providers' => [
    // ...
    Mds\SsoClient\SsoServiceProvider::class,
],

'aliases' => [
    // ...
    'Sso' => Mds\SsoClient\Facades\Sso::class,
],



return [
    'sso_wsdl' => env('SSO_WSDL'),
    'sso_aid' => env('SSO_AID'),
    'sso_rol' => env('SSO_ROL'),

    // Configuración SOAP personalizada
    'soap_options' => [
        'timeout' => 30,
        'connection_timeout' => 10,
    ],
];

use Mds\SsoClient\Sso;

$resultado = Sso::getUsuario('12345678-9');

if ($resultado->estado === 'ok') {
    echo "Usuario encontrado: " . $resultado->usuario->Usuarios->Usuario->Nombre;
} else {
    echo "Error: " . $resultado->estado_msg;
}

use Mds\SsoClient\Sso;

$autorizacion = Sso::getAutorizar('token_aqui');

if ($autorizacion->estado === 'ok') {
    // Token válido - proceder con la aplicación
    $userInfo = $autorizacion->autorizar;
} else {
    // Token inválido - rechazar acceso
    return response()->json(['error' => $autorizacion->estado_msg], 401);
}

use Mds\SsoClient\Sso;

$resultado = Sso::setCrearUsuario(
    rut: '12345678-9',
    nombre: 'Juan Pérez',
    correo: '[email protected]',
    clave: 'password_seguro_123',
    habilitado: true
);

if ($resultado->estado === 'ok') {
    echo "Usuario creado exitosamente";
} else {
    echo "Error al crear usuario: " . $resultado->estado_msg;
}

use Mds\SsoClient\Sso;

// Asignar múltiples roles
$roles = [1, 2]; // Admin y Revisor
$resultado = Sso::setAsignarRoles('12345678-9', $roles);

// Listar roles de usuario
$rolesUsuario = Sso::listarRolesUsuario('12345678-9');

if ($rolesUsuario->estado === 'ok') {
    foreach ($rolesUsuario->usuario->Roles->Rol as $rol) {
        echo "Rol: " . $rol->Nombre . "\n";
    }
}

use Mds\SsoClient\Sso;

// Sin facade - útil para testing o uso fuera de Laravel
$usuario = Sso::getUsuario('12345678-9');
$resultado = Sso::eliminarUsuario('98765432-1');



namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Mds\SsoClient\Sso;
use App\Models\User;
use Auth;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $rut = $request->input('rut');
        $usuario = Sso::getUsuario($rut);

        if ($usuario->estado === 'ok') {
            $rut = $response->autorizar->Usuario->RUT;
            $runData = explode("-", $rut);
            $usuario = User::with('roles')->where('rut_numero', $runData[0])->first();
            // Crear sesión local
            $token = Auth::guard('web')->fromUser($usuario);

            return redirect()->route('dashboard');
        }

        return back()->withErrors(['rut' => 'Usuario no encontrado en SSO']);
    }

}

Sso::setCrearUsuario(
    string $rut,           // RUT del usuario (ej: '12345678-9')
    string $nombre,        // Nombre completo
    string $correo,        // Email válido
    string $clave,         // Contraseña
    bool $habilitado = true // Estado del usuario
): object

$respuesta = (object) [
    'estado' => 'ok',
    'estado_msg' => 'Operación exitosa',
    'usuario' => (object) [
        // Datos específicos según la operación
        'Usuarios' => [...],
        'Cantidad' => 1
    ]
];

$respuesta = (object) [
    'estado' => 'error',
    'estado_c' => 0,
    'estado_msg' => 'Descripción del error'
];

// Estados de respuesta
Sso::SSO_CODIGO_ESTADO_OK           // 1 - Operación exitosa
Sso::SSO_CODIGO_ESTADO_ERROR        // 0 - Error en operación
Sso::SSO_CODIGO_ESTADO_ADVERTENCIA  // 2 - Advertencia

// Mensajes de error
Sso::ERROR_SSO_WSDL                 // Error de configuración WSDL
Sso::ERROR_SSO_AID                  // Error de Application ID
Sso::ERROR_RUT_REQUERIDO            // RUT no proporcionado
// ... más constantes disponibles



use Mds\SsoClient\Sso;
use PHPUnit\Framework\TestCase;

class SsoTest extends TestCase
{
    public function test_can_validate_user()
    {
        $result = Sso::getUsuario('12345678-9');
        $this->assertIsObject($result);
        $this->assertObjectHasAttribute('estado', $result);
    }
}

use Illuminate\Support\Facades\Log;
use Mds\SsoClient\Sso;

$resultado = Sso::getUsuario('12345678-9');

if ($resultado->estado === 'error') {
    Log::error('SSO Error', [
        'message' => $resultado->estado_msg,
        'code' => $resultado->estado_c ?? null,
        'method' => 'getUsuario',
        'rut' => '12345678-9'
    ]);
}
bash
php artisan vendor:publish --tag=sso-config