Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Oauth2 Uco Laravel Package

aulasoftwarelibre/oauth2-uco

Laravel OAuth2 provider for Universidad de Córdoba (UCO). Adds authentication support for UCO’s OAuth2 service, enabling login and user info retrieval in Laravel/Socialite-based apps.

View on GitHub
Deep Wiki
Context7

Proveedor de identidad de la Universidad de Córdoba para OAuth 2.0 Client

Este paquete provee soporte para autenticación OAuth 2.0 para el paquete league/oauth2-client de PHP.

Antes de empezar

Para poder usar este paquete debe solicitar credenciales de acceso al Servicio de Informática de la Universidad de Córdoba.

Instalación

Para instalar esta librería, use composer:

composer require informaticauco/oauth2-uco

Uso

El uso es similar a cualquier proveedor de league/oauth2-client, pero usando Uco\OAuth2\Client\Provider\Uco como proveedor de servicio.

Código de ejemplo

<?php

$provider = new Uco\OAuth2\Client\Provider\Uco([
    'clientId'          => '{client-id}',
    'clientSecret'      => '{client-secret}',
    'redirectUri'       => 'https://servidor/redirect',
]);

// Si no tenemos código de autorización, solicitamos uno
if (!isset($_GET['code'])) {

    // Usamos el proveedor de la UCO para conseguir la URL de autorización
    $authorizationUrl = $provider->getAuthorizationUrl();

    // Leemos el código de estado de la petición y lo guardamos en la sesión
    $_SESSION['oauth2state'] = $provider->getState();

    // Redireccionamos al usuario al sistema de autenticación de la universidad
    header('Location: ' . $authorizationUrl);
    exit;

// Comprobamos que el código de estado concuerda para evitar ataques CSRF
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {

    unset($_SESSION['oauth2state']);
    exit('Invalid state');
// El código es válido
} else {

    try {

        // Intentamos obtener un token de acceso con el código de autorización.
        $accessToken = $provider->getAccessToken('authorization_code', [
            'code' => $_GET['code']
        ]);

        // We have an access token, which we may use in authenticated
        // requests against the service provider's API.
        echo $accessToken->getToken() . "\n";
        echo $accessToken->getRefreshToken() . "\n";
        echo $accessToken->getExpires() . "\n";
        echo ($accessToken->hasExpired() ? 'expired' : 'not expired') . "\n";

        // Con el access token podemos acceder a los datos del usuario
        $resourceOwner = $provider->getResourceOwner($accessToken);
        echo "¡Hola {$resourceOwner->getId()}!";

        // El usuario está logueado, podemos usar $token o crear nuestras
        // propias variables de sesión.
        
        // Redireccionamos al usuario a la página de la aplicación
        header('Location: /');
        exit;

    } catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {

        // Si ocurre un fallo al acceder a los datos del usuario
        exit($e->getMessage());

    }
}

Refrescar un token (opcional)

Si es necesario acceder a una API y refrescar el token de acceso, se puede usar un código similar a este:

<?php

$provider = new Uco\OAuth2\Client\Provider\Uco([
    'clientId'          => '{client-id}',
    'clientSecret'      => '{client-secret}',
    'redirectUri'       => 'https://servidor/redirect',
]);

$existingAccessToken = getAccessTokenFromYourDataStore(); // $token del código anterior

if ($existingAccessToken->hasExpired()) {
    $newAccessToken = $provider->getAccessToken('refresh_token', [
        'refresh_token' => $existingAccessToken->getRefreshToken()
    ]);
}
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle