tigusigalpa / alfa-id-php
Laravel package for Alfa ID OAuth authentication integration
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/tigusigalpa/alfa-id-php
Requires
- php: ^7.4|^8.0|^8.1|^8.2|^8.3
- guzzlehttp/guzzle: ^7.0
- illuminate/http: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.0|^10.0
README
Laravel пакет для интеграции OAuth авторизации Alfa ID (сервис авторизации Альфа-Банка). Полная реализация OAuth 2.0 Authorization Code Flow с поддержкой песочницы и промышленного окружения.
🌐 Язык: Русский | English
Содержание
- Возможности
- Требования
- Быстрый старт
- Установка
- Конфигурация
- Использование
- Справочник API
- Продвинутая интеграция
- Безопасность
- Тестирование
- Решение проблем
- Участие в разработке
- История изменений
- Лицензия
Возможности
✅ OAuth 2.0 Authorization Code Flow - Полная реализация
✅ Поддержка двух окружений - Песочница и промышленный режим
✅ Интеграция с Laravel - Service provider, facade, middleware
✅ Встроенные роуты - Готовые OAuth endpoints
✅ Управление токенами - Получение, обновление и отзыв токенов
✅ Профиль пользователя - Получение информации об аутентифицированном пользователе
✅ CSRF защита - Валидация state параметра
✅ Вспомогательные функции - Удобные утилиты
✅ Модульные тесты - Включен набор тестов PHPUnit
✅ Мультиверсионность - Laravel 8-12, PHP 7.4-8.3
Требования
- PHP: 7.4, 8.0, 8.1, 8.2 или 8.3
- Laravel: 8.x, 9.x, 10.x, 11.x или 12.x
- GuzzleHTTP: 7.x
Быстрый старт
Запустите за 5 минут!
Шаг 1: Установка пакета
composer require tigusigalpa/alfa-id-php
Шаг 2: Публикация конфигурации
php artisan vendor:publish --tag=alfaid-config
Шаг 3: Настройка окружения
Добавьте в ваш .env файл:
ALFAID_ENVIRONMENT=sandbox ALFAID_SANDBOX_CLIENT_ID=ваш_client_id ALFAID_SANDBOX_CLIENT_SECRET=ваш_client_secret ALFAID_SANDBOX_REDIRECT_URI=http://localhost:8000/alfaid/callback
Получите учетные данные на: https://developers.alfabank.ru/
Шаг 4: Добавление роутов
Добавьте в routes/web.php:
// Обработчик успеха Route::get('/dashboard', function () { $user = session('alfaid_user'); return view('dashboard', compact('user')); })->middleware('alfaid')->name('alfaid.success'); // Обработчик ошибок Route::get('/auth/error', function () { return view('errors.auth')->with('error', session('error')); })->name('alfaid.error'); // Успешный выход Route::get('/', function () { return view('welcome'); })->name('alfaid.logout.success');
Шаг 5: Регистрация Middleware
Добавьте в app/Http/Kernel.php:
protected $routeMiddleware = [ // ... существующие middleware 'alfaid' => \Tigusigalpa\AlfaID\Middleware\AlfaIDAuthenticated::class, ];
Шаг 6: Добавление кнопки входа
В вашем blade шаблоне:
<a href="{{ route('alfaid.login') }}" class="btn btn-primary"> Войти через Альфа-Банк </a>
Шаг 7: Тестирование!
php artisan serve
Посетите http://localhost:8000 и нажмите "Войти через Альфа-Банк" 🎉
Установка
Вариант A: Через Composer (после публикации)
composer require tigusigalpa/alfa-id-php
Вариант B: Локальная разработка
Добавьте в ваш composer.json:
{
"repositories": [
{
"type": "path",
"url": "./packages/alfa-id-php"
}
],
"require": {
"tigusigalpa/alfa-id-php": "*"
}
}
Затем выполните:
composer update tigusigalpa/alfa-id-php
Публикация файла конфигурации
php artisan vendor:publish --tag=alfaid-config
Это создаст файл config/alfaid.php в вашем приложении.
Настройка переменных окружения
Добавьте в ваш .env файл:
# Выберите окружение: sandbox или production ALFAID_ENVIRONMENT=sandbox # Конфигурация песочницы ALFAID_SANDBOX_CLIENT_ID=ваш_sandbox_client_id ALFAID_SANDBOX_CLIENT_SECRET=ваш_sandbox_client_secret ALFAID_SANDBOX_REDIRECT_URI=http://localhost:8000/alfaid/callback # Конфигурация промышленного окружения ALFAID_PRODUCTION_CLIENT_ID=ваш_production_client_id ALFAID_PRODUCTION_CLIENT_SECRET=ваш_production_client_secret ALFAID_PRODUCTION_REDIRECT_URI=https://yourdomain.com/alfaid/callback # Опциональные настройки ALFAID_SCOPES="openid profile email" ALFAID_VERIFY_SSL=true
Настройка роутов
Пакет автоматически регистрирует эти роуты:
GET /alfaid/loginGET /alfaid/callbackPOST /alfaid/logoutPOST /alfaid/refreshGET /alfaid/user
Вам нужно создать роуты для успеха/ошибки в вашем routes/web.php:
Route::get('/alfaid/success', function () { return redirect('/dashboard'); })->name('alfaid.success'); Route::get('/alfaid/error', function () { return view('auth.error'); })->name('alfaid.error'); Route::get('/alfaid/logout/success', function () { return redirect('/'); })->name('alfaid.logout.success');
Получение учетных данных Alfa ID
Окружение песочницы
- Посетите Портал разработчиков Альфа-Банка
- Зарегистрируйтесь или войдите в свой аккаунт
- Создайте новое приложение
- Выберите "Alfa ID" в качестве продукта
- Настройте redirect URI (например,
http://localhost:8000/alfaid/callback) - Скопируйте Client ID и Client Secret
- Используйте эти учетные данные в вашем
.envфайле
Промышленное окружение
- Завершите тестирование в песочнице
- Отправьте ваше приложение на одобрение для промышленного использования
- После одобрения вы получите промышленные учетные данные
- Обновите ваш
.envпромышленными учетными данными - Измените
ALFAID_ENVIRONMENT=production
Конфигурация
Файл config/alfaid.php содержит следующие опции:
return [ // Окружение: 'sandbox' или 'production' 'environment' => env('ALFAID_ENVIRONMENT', 'sandbox'), // Конфигурация песочницы 'sandbox' => [ 'base_url' => 'https://id-sandbox.alfabank.ru', 'client_id' => env('ALFAID_SANDBOX_CLIENT_ID'), 'client_secret' => env('ALFAID_SANDBOX_CLIENT_SECRET'), 'redirect_uri' => env('ALFAID_SANDBOX_REDIRECT_URI'), ], // Конфигурация промышленного окружения 'production' => [ 'base_url' => 'https://id.alfabank.ru', 'client_id' => env('ALFAID_PRODUCTION_CLIENT_ID'), 'client_secret' => env('ALFAID_PRODUCTION_CLIENT_SECRET'), 'redirect_uri' => env('ALFAID_PRODUCTION_REDIRECT_URI'), ], // OAuth scopes 'scopes' => env('ALFAID_SCOPES', 'openid profile email'), // Длина state параметра для CSRF защиты 'state_length' => 32, // HTTP таймаут в секундах 'timeout' => 30, // SSL верификация 'verify_ssl' => env('ALFAID_VERIFY_SSL', true), ];
Использование
Базовый процесс аутентификации
Пакет автоматически регистрирует роуты для OAuth процесса:
GET /alfaid/login- Перенаправление на страницу авторизации Alfa IDGET /alfaid/callback- Обработка OAuth callbackPOST /alfaid/logout- Выход пользователя и отзыв токенаPOST /alfaid/refresh- Обновление access tokenGET /alfaid/user- Возвращает данные аутентифицированного пользователя
Использование Facade
use Tigusigalpa\AlfaID\Facades\AlfaID; // Получить URL авторизации $authUrl = AlfaID::getAuthorizationUrl(); // Получить access token из кода авторизации $tokenData = AlfaID::getAccessToken($code); // Получить профиль пользователя $userProfile = AlfaID::getUserProfile($accessToken); // Обновить access token $newTokenData = AlfaID::refreshAccessToken($refreshToken); // Отозвать токен AlfaID::revokeToken($accessToken);
Использование Dependency Injection
use Tigusigalpa\AlfaID\AlfaIDClient; class YourController extends Controller { protected $alfaId; public function __construct(AlfaIDClient $alfaId) { $this->alfaId = $alfaId; } public function login() { return redirect($this->alfaId->getAuthorizationUrl()); } }
Защита роутов с помощью Middleware
Зарегистрируйте middleware в app/Http/Kernel.php:
protected $routeMiddleware = [ // ... другие middleware 'alfaid' => \Tigusigalpa\AlfaID\Middleware\AlfaIDAuthenticated::class, ];
Используйте в ваших роутах:
Route::middleware('alfaid')->group(function () { Route::get('/dashboard', [DashboardController::class, 'index']); Route::get('/profile', [ProfileController::class, 'show']); });
Использование вспомогательных функций
use Tigusigalpa\AlfaID\Helpers\AlfaIDHelper; // Проверить, аутентифицирован ли пользователь if (AlfaIDHelper::isAuthenticated()) { // Пользователь аутентифицирован } // Получить access token $accessToken = AlfaIDHelper::getAccessToken(); // Получить данные пользователя $user = AlfaIDHelper::getUser(); // Получить конкретный атрибут пользователя $email = AlfaIDHelper::getUserAttribute('email'); $name = AlfaIDHelper::getUserAttribute('name', 'Гость'); // Проверить, истек ли токен if (AlfaIDHelper::isTokenExpired()) { // Токен нужно обновить }
Переключение окружений
use Tigusigalpa\AlfaID\Facades\AlfaID; // Переключиться на production AlfaID::setEnvironment('production'); // Переключиться на sandbox AlfaID::setEnvironment('sandbox'); // Получить текущее окружение $env = AlfaID::getEnvironment();
Использование без Laravel (чистый PHP)
Библиотеку можно использовать в любом PHP проекте без Laravel:
Установка через Composer
composer require tigusigalpa/alfa-id-php
Базовая настройка
<?php require_once 'vendor/autoload.php'; use Tigusigalpa\AlfaID\AlfaIDClient; // Конфигурация $config = [ 'environment' => 'sandbox', // или 'production' 'sandbox' => [ 'base_url' => 'https://id-sandbox.alfabank.ru', 'client_id' => 'ваш_client_id', 'client_secret' => 'ваш_client_secret', 'redirect_uri' => 'http://localhost:8000/callback.php', ], 'production' => [ 'base_url' => 'https://id.alfabank.ru', 'client_id' => 'ваш_production_client_id', 'client_secret' => 'ваш_production_client_secret', 'redirect_uri' => 'https://yourdomain.com/callback.php', ], 'scopes' => 'openid profile email', 'state_length' => 32, 'timeout' => 30, 'verify_ssl' => true, ]; // Создание клиента $alfaId = new AlfaIDClient($config);
Пример: Страница входа (login.php)
<?php session_start(); require_once 'vendor/autoload.php'; use Tigusigalpa\AlfaID\AlfaIDClient; $config = [/* ваша конфигурация */]; $alfaId = new AlfaIDClient($config); // Генерация state для CSRF защиты $state = bin2hex(random_bytes(16)); $_SESSION['alfaid_state'] = $state; // Получение URL авторизации $authUrl = $alfaId->getAuthorizationUrl($state); // Перенаправление на Alfa ID header('Location: ' . $authUrl); exit;
Пример: Обработка callback (callback.php)
<?php session_start(); require_once 'vendor/autoload.php'; use Tigusigalpa\AlfaID\AlfaIDClient; use Tigusigalpa\AlfaID\Exceptions\AlfaIDException; $config = [/* ваша конфигурация */]; $alfaId = new AlfaIDClient($config); try { // Получение кода и state из параметров $code = $_GET['code'] ?? null; $state = $_GET['state'] ?? null; if (!$code || !$state) { throw new Exception('Отсутствуют необходимые параметры'); } // Проверка state (CSRF защита) if (!isset($_SESSION['alfaid_state']) || $_SESSION['alfaid_state'] !== $state) { throw new Exception('Неверный state параметр'); } // Удаление использованного state unset($_SESSION['alfaid_state']); // Обмен кода на токен $tokenData = $alfaId->getAccessToken($code); // Сохранение токенов в сессии $_SESSION['alfaid_access_token'] = $tokenData['access_token']; $_SESSION['alfaid_refresh_token'] = $tokenData['refresh_token']; $_SESSION['alfaid_expires_in'] = $tokenData['expires_in']; $_SESSION['alfaid_token_created_at'] = time(); // Получение профиля пользователя $userProfile = $alfaId->getUserProfile($tokenData['access_token']); // Сохранение данных пользователя $_SESSION['alfaid_user'] = $userProfile; // Перенаправление на защищенную страницу header('Location: dashboard.php'); exit; } catch (AlfaIDException $e) { echo "Ошибка авторизации: " . $e->getMessage(); } catch (Exception $e) { echo "Ошибка: " . $e->getMessage(); }
Пример: Защищенная страница (dashboard.php)
<?php session_start(); require_once 'vendor/autoload.php'; use Tigusigalpa\AlfaID\AlfaIDClient; // Проверка авторизации if (!isset($_SESSION['alfaid_access_token']) || !isset($_SESSION['alfaid_user'])) { header('Location: login.php'); exit; } // Проверка истечения токена $tokenAge = time() - ($_SESSION['alfaid_token_created_at'] ?? 0); $expiresIn = $_SESSION['alfaid_expires_in'] ?? 0; if ($tokenAge >= $expiresIn) { // Токен истек, нужно обновить $config = [/* ваша конфигурация */]; $alfaId = new AlfaIDClient($config); try { $newTokenData = $alfaId->refreshAccessToken($_SESSION['alfaid_refresh_token']); $_SESSION['alfaid_access_token'] = $newTokenData['access_token']; $_SESSION['alfaid_refresh_token'] = $newTokenData['refresh_token']; $_SESSION['alfaid_expires_in'] = $newTokenData['expires_in']; $_SESSION['alfaid_token_created_at'] = time(); } catch (Exception $e) { // Не удалось обновить токен, требуется повторная авторизация session_destroy(); header('Location: login.php'); exit; } } $user = $_SESSION['alfaid_user']; ?> <!DOCTYPE html> <html> <head> <title>Панель управления</title> </head> <body> <h1>Добро пожаловать, <?= htmlspecialchars($user['name'] ?? 'Пользователь') ?>!</h1> <p>Email: <?= htmlspecialchars($user['email'] ?? 'Не указан') ?></p> <p>ID: <?= htmlspecialchars($user['sub'] ?? '') ?></p> <a href="logout.php">Выйти</a> </body> </html>
Пример: Выход (logout.php)
<?php session_start(); require_once 'vendor/autoload.php'; use Tigusigalpa\AlfaID\AlfaIDClient; if (isset($_SESSION['alfaid_access_token'])) { $config = [/* ваша конфигурация */]; $alfaId = new AlfaIDClient($config); try { // Отзыв токена $alfaId->revokeToken($_SESSION['alfaid_access_token']); } catch (Exception $e) { // Игнорируем ошибки отзыва } } // Очистка сессии session_destroy(); // Перенаправление на главную header('Location: index.php'); exit;
Пример: Получение данных пользователя
<?php session_start(); require_once 'vendor/autoload.php'; use Tigusigalpa\AlfaID\AlfaIDClient; if (!isset($_SESSION['alfaid_access_token'])) { http_response_code(401); echo json_encode(['error' => 'Не авторизован']); exit; } $config = [/* ваша конфигурация */]; $alfaId = new AlfaIDClient($config); try { $userProfile = $alfaId->getUserProfile($_SESSION['alfaid_access_token']); header('Content-Type: application/json'); echo json_encode($userProfile); } catch (Exception $e) { http_response_code(500); echo json_encode(['error' => $e->getMessage()]); }
Работа с разными окружениями
<?php require_once 'vendor/autoload.php'; use Tigusigalpa\AlfaID\AlfaIDClient; $config = [/* ваша конфигурация */]; $alfaId = new AlfaIDClient($config); // Переключение на production $alfaId->setEnvironment('production'); // Переключение на sandbox $alfaId->setEnvironment('sandbox'); // Получение текущего окружения $currentEnv = $alfaId->getEnvironment(); echo "Текущее окружение: " . $currentEnv;
Справочник API
Класс AlfaIDClient
Основной клиентский класс для взаимодействия с Alfa ID OAuth API.
Конструктор
public function __construct(array $config = null)
Создает новый экземпляр AlfaIDClient.
Параметры:
$config(array|null): Опциональный массив конфигурации. Если null, использует Laravel config.
Методы
getAuthorizationUrl()
public function getAuthorizationUrl($state = null, $scopes = null): string
Генерирует URL авторизации для перенаправления пользователей на страницу входа Alfa ID.
Параметры:
$state(string|null): CSRF state параметр. Генерируется автоматически, если null.$scopes(string|null): OAuth scopes. Использует значение по умолчанию из конфига, если null.
Возвращает: Строку URL авторизации
Пример:
$url = AlfaID::getAuthorizationUrl(); return redirect($url);
getAccessToken()
public function getAccessToken($code): array
Обменивает код авторизации на access token.
Параметры:
$code(string): Код авторизации из callback
Возвращает: Массив, содержащий:
access_token(string)refresh_token(string)expires_in(int)token_type(string)
Выбрасывает: TokenException при ошибке
Пример:
$tokenData = AlfaID::getAccessToken($request->input('code'));
refreshAccessToken()
public function refreshAccessToken($refreshToken): array
Обновляет истекший access token.
Параметры:
$refreshToken(string): Refresh token
Возвращает: Массив с новыми данными токена
Выбрасывает: TokenException при ошибке
Пример:
$newTokenData = AlfaID::refreshAccessToken($oldRefreshToken);
getUserProfile()
public function getUserProfile($accessToken): array
Получает информацию о профиле пользователя.
Параметры:
$accessToken(string): Действительный access token
Возвращает: Массив с данными профиля пользователя:
sub(string): ID пользователяname(string): Полное имяemail(string): Email адресphone_number(string): Номер телефона- Другие поля профиля
Выбрасывает: AlfaIDException при ошибке
Пример:
$user = AlfaID::getUserProfile($accessToken);
revokeToken()
public function revokeToken($token, $tokenTypeHint = 'access_token'): bool
Отзывает access или refresh token.
Параметры:
$token(string): Токен для отзыва$tokenTypeHint(string): Тип токена ('access_token' или 'refresh_token')
Возвращает: Булево значение успеха
Выбрасывает: AlfaIDException при ошибке
Пример:
AlfaID::revokeToken($accessToken);
Класс AlfaIDHelper
Статические вспомогательные методы для общих задач.
isAuthenticated()
public static function isAuthenticated(): bool
Проверяет, аутентифицирован ли пользователь.
Возвращает: True, если аутентифицирован
Пример:
if (AlfaIDHelper::isAuthenticated()) { // Пользователь вошел в систему }
Исключения
AlfaIDException
Базовый класс исключений для всех ошибок Alfa ID.
Свойства:
$response: HTTP response объект (если доступен)
Методы:
getResponse(): Получить HTTP response
InvalidStateException
Выбрасывается при ошибке валидации state параметра (CSRF защита).
TokenException
Выбрасывается при ошибках операций с токенами.
Ключи сессии
Пакет использует следующие ключи сессии:
alfaid_state: CSRF state параметр (временный)alfaid_access_token: Access tokenalfaid_refresh_token: Refresh tokenalfaid_expires_in: Время истечения токена (секунды)alfaid_token_type: Тип токена (обычно "Bearer")alfaid_token_created_at: Временная метка создания токенаalfaid_user: Данные профиля пользователя
OAuth Scopes
Доступные scopes:
openid: Требуется для OpenID Connectprofile: Информация профиля пользователяemail: Email адресphone: Номер телефона
Scopes по умолчанию: openid profile email
API Endpoints
Окружение песочницы
- Базовый URL:
https://id-sandbox.alfabank.ru - Для тестирования и разработки
Промышленное окружение
- Базовый URL:
https://id.alfabank.ru - Для реальных приложений
OAuth Endpoints
/oauth/authorize- Endpoint авторизации/oauth/token- Endpoint токена/oauth/userinfo- Endpoint профиля пользователя/oauth/revoke- Endpoint отзыва токена
Продвинутая интеграция
Пользовательское управление пользователями
Хранение пользователей Alfa ID в вашей базе данных:
use App\Models\User; use Illuminate\Http\Request; use Tigusigalpa\AlfaID\Facades\AlfaID; class AlfaIDAuthController extends Controller { public function callback(Request $request) { try { $code = $request->input('code'); $state = $request->input('state'); AlfaID::validateState($state); $tokenData = AlfaID::getAccessToken($code); $profile = AlfaID::getUserProfile($tokenData['access_token']); // Найти или создать пользователя $user = User::updateOrCreate( ['email' => $profile['email']], [ 'name' => $profile['name'], 'alfa_id' => $profile['sub'], 'phone' => $profile['phone_number'] ?? null, ] ); // Сохранить токены (зашифрованные) $user->update([ 'alfa_access_token' => encrypt($tokenData['access_token']), 'alfa_refresh_token' => encrypt($tokenData['refresh_token']), 'alfa_token_expires_at' => now()->addSeconds($tokenData['expires_in']), ]); // Войти пользователя auth()->login($user); return redirect('/dashboard'); } catch (\Exception $e) { return redirect('/login')->with('error', $e->getMessage()); } } }
Автоматическое обновление токена
Middleware для автоматического обновления истекших токенов:
namespace App\Http\Middleware; use Closure; use Tigusigalpa\AlfaID\Facades\AlfaID; use Tigusigalpa\AlfaID\Helpers\AlfaIDHelper; class RefreshAlfaIDToken { public function handle($request, Closure $next) { if (AlfaIDHelper::isTokenExpired()) { try { $refreshToken = AlfaIDHelper::getRefreshToken(); $tokenData = AlfaID::refreshAccessToken($refreshToken); session([ 'alfaid_access_token' => $tokenData['access_token'], 'alfaid_refresh_token' => $tokenData['refresh_token'], 'alfaid_expires_in' => $tokenData['expires_in'], 'alfaid_token_created_at' => time(), ]); } catch (\Exception $e) { return redirect()->route('alfaid.login'); } } return $next($request); } }
Безопасность
Лучшие практики
1. Хранение токенов
Не делайте так: Хранение токенов в открытом виде
// Плохо $user->alfa_token = $token;
Делайте так: Шифруйте токены
// Хорошо $user->alfa_token = encrypt($token);
2. State параметр
Всегда валидируйте state параметр (автоматически обрабатывается пакетом):
AlfaID::validateState($request->input('state'));
3. HTTPS в промышленном окружении
Всегда используйте HTTPS для redirect URI в промышленном окружении:
ALFAID_PRODUCTION_REDIRECT_URI=https://yourdomain.com/alfaid/callback
Чеклист для промышленного окружения
Перед развертыванием в промышленное окружение:
- Переключиться на промышленное окружение:
ALFAID_ENVIRONMENT=production - Обновить промышленные учетные данные в
.env - Проверить, что redirect URI соответствует промышленному домену
- Включить SSL верификацию:
ALFAID_VERIFY_SSL=true - Хранить токены в базе данных (зашифрованные)
- Реализовать механизм обновления токенов
- Добавить логирование ошибок и мониторинг
- Протестировать полный OAuth процесс
- Проверить лучшие практики безопасности
- Настроить HTTPS на вашем домене
- Настроить параметры безопасности сессии
- Добавить ограничение частоты запросов к auth endpoints
Тестирование
Пакет включает режим песочницы для тестирования:
- Установите
ALFAID_ENVIRONMENT=sandboxв вашем.env - Используйте учетные данные песочницы из портала разработчиков Альфа-Банка
- Протестируйте полный OAuth процесс
Решение проблем
Частые проблемы
Проблема: "Invalid redirect_uri"
Причина: Redirect URI не соответствует зарегистрированному URI
Решение:
- Проверьте
.envфайл:ALFAID_SANDBOX_REDIRECT_URI - Убедитесь, что он точно совпадает в консоли Alfa ID
- Включите протокол (http/https)
- Включите порт, если не стандартный (80/443)
Проблема: "Invalid state parameter"
Причина: Ошибка CSRF защиты
Решение: Убедитесь, что сессии работают корректно в вашем Laravel приложении.
Проблема: Ошибка SSL сертификата
Причина: Ошибка SSL верификации
Решение: Для локальной разработки вы можете установить ALFAID_VERIFY_SSL=false в .env. Никогда не делайте этого
в промышленном окружении.
Проблема: Роуты не найдены
Причина: Проблемы с кешем роутов
Решение:
php artisan route:clear php artisan config:clear
Участие в разработке
Спасибо за интерес к участию в разработке этого пакета!
Как участвовать
- Сделайте fork репозитория
- Создайте новую ветку для вашей функции или исправления
- Внесите изменения
- Напишите или обновите тесты при необходимости
- Убедитесь, что все тесты проходят
- Отправьте pull request
Стандарты кодирования
- Следуйте стандартам кодирования PSR-12
- Пишите понятные, описательные сообщения коммитов
- Добавляйте комментарии для сложной логики
- Обновляйте документацию при необходимости
Сообщение о проблемах
При сообщении о проблемах, пожалуйста, укажите:
- Версию Laravel
- Версию PHP
- Версию пакета
- Шаги для воспроизведения
- Ожидаемое поведение
- Фактическое поведение
- Любые сообщения об ошибках или логи
История изменений
[1.0.0] - 2024-12-21
Добавлено
- Первый релиз
- Реализация OAuth 2.0 Authorization Code Flow
- Поддержка песочницы и промышленного окружения
- Laravel service provider и facade
- Middleware для аутентификации
- Встроенные роуты для OAuth процесса
- Управление токенами (получение, обновление, отзыв)
- Получение профиля пользователя
- Хранение аутентификации в сессии
- Вспомогательные функции для общих задач
- Всесторонняя документация
- Примеры использования и руководства по интеграции
- Модульные тесты с PHPUnit
- GitHub Actions CI/CD workflow
Ссылки
Лицензия
MIT License
Copyright (c) 2025 Igor Sazonov
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Автор
Igor Sazonov
- Email: sovletig@gmail.com
- GitHub: @tigusigalpa
Поддержка
По вопросам и проблемам:
- GitHub Issues: https://github.com/tigusigalpa/alfa-id-php/issues
- Email: sovletig@gmail.com
- Разработчики Альфа-Банка: https://developers.alfabank.ru/