PHPackages                             beeralex/beeralex.user - 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. beeralex/beeralex.user

ActiveBitrix-module

beeralex/beeralex.user
======================

v1.1.03(1mo ago)00MITPHP

Since Jan 28Pushed 1mo agoCompare

[ Source](https://github.com/BkycHblu-6oPwuK/beeralex.user)[ Packagist](https://packagist.org/packages/beeralex/beeralex.user)[ RSS](/packages/beeralex-beeralexuser/feed)WikiDiscussions main Synced 1mo ago

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

Модуль пользователей (beeralex.user)
====================================

[](#модуль-пользователей-beeralexuser)

Модуль для управления пользователями, аутентификацией и JWT токенами в Bitrix Framework.

Возможности
-----------

[](#возможности)

- 🔐 **Многостратегийная аутентификация** — Email, телефон, социальные сети
- 🎫 **JWT токены** — Access/Refresh токены с управлением сессиями
- 📱 **Телефоны** — Работа с международными номерами через
- 🌐 **Социальные сети** — Интеграция с Bitrix Social Services (Google, Yandex, VK, и др.)
- 🔌 **Расширяемость** — Кастомные аутентификаторы, валидаторы, middleware
- 📦 **DI Container** — Все сервисы доступны через внедрение зависимостей

Требования
----------

[](#требования)

- PHP 8.2+
- Bitrix Framework 25.0+ (рекомендуемая для php 8.2)
- Composer

Быстрый старт
-------------

[](#быстрый-старт)

### Регистрация пользователя

[](#регистрация-пользователя)

```
use Beeralex\User\Auth\AuthService;
use Beeralex\User\Auth\AuthCredentialsDto;

$authService = service(AuthService::class);

$credentials = new AuthCredentialsDto(
    type: 'email',
    email: 'user@example.com',
    password: 'password123',
    firstName: 'Иван',
    lastName: 'Иванов'
);

$result = $authService->register($credentials);

if ($result->isSuccess()) {
    $data = $result->getData();
    echo "Пользователь зарегистрирован. ID: {$data['userId']}";

    // JWT токены (если включены) лучше хранить в httpOnly cookies
    // См. пример в AuthController
}
```

### Вход пользователя

[](#вход-пользователя)

```
$credentials = new AuthCredentialsDto(
    type: 'email',
    email: 'user@example.com',
    password: 'password123'
);

$result = $authService->login($credentials);

if ($result->isSuccess()) {
    echo "Авторизация успешна";
}
```

### Работа с репозиторием

[](#работа-с-репозиторием)

```
use Beeralex\User\Repository\UserRepositoryContract;

$userRepo = service(UserRepositoryContract::class);

// Получить по ID
$user = $userRepo->getById(123);

// Получить по email
$user = $userRepo->getByEmail('user@example.com');

// Получить текущего пользователя
$currentUser = $userRepo->getCurrentUser();

if ($user) {
    echo $user->getFullName();
    echo $user->getEmail();
    echo $user->getPhone()->formatInternational();
}
```

### REST API контроллер

[](#rest-api-контроллер)

```
use Beeralex\Core\Http\Controllers\ApiController;
use Beeralex\User\Auth\AuthService;

class AuthController extends ApiController
{
    public function loginAction()
    {
        $data = $this->getJsonPayload();

        $authService = service(AuthService::class);

        $credentials = new AuthCredentialsDto(
            type: $data['type'],
            email: $data['email'] ?? null,
            password: $data['password'] ?? null
        );

        $result = $authService->login($credentials);

        if ($result->isSuccess()) {
            return [
                'status' => 'success',
                'data' => $result->getData()
            ];
        }

        return [
            'status' => 'error',
            'errors' => $result->getErrorMessages()
        ];
    }
}
```

Архитектура
-----------

[](#архитектура)

```
┌─────────────────────────────────────────┐
│            AuthService                  │ ← High-level API
│  (login, register, refreshTokens)       │
└────────────┬────────────────────────────┘
             │
             ├─ AuthManager ──────────────────┐
             │  (координатор authenticators)  │
             │                                 │
             ├─ EmailAuthenticator            │
             ├─ PhoneAuthenticator            │
             └─ SocialAuthenticators[]        │
                                              │
             ┌─ JwtTokenManager               │
             │  (генерация и валидация)       │
             └────────────────────────────────┘

┌─────────────────────────────────────────┐
│         UserRepository                  │ ← Data access
│  (getById, getByEmail, CRUD)            │
└────────────┬────────────────────────────┘
             │
             ├─ UserFactory
             ├─ UserBuilder
             └─ User (entity)

┌─────────────────────────────────────────┐
│          UserService                    │ ← Business logic
│  (changePassword, updateProfile)        │
└─────────────────────────────────────────┘

```

Конфигурация
------------

[](#конфигурация)

### JWT токены

[](#jwt-токены)

Настройка выполняется через административную панель:

**Настройки → Настройки модулей → Модуль пользователей (beeralex.user)**

- ✅ Включить JWT авторизацию
- Секретный ключ (256 бит)
- Алгоритм: HS256, HS384, HS512
- Время жизни access/refresh токенов

### Социальные сети

[](#социальные-сети)

Настраиваются через стандартный интерфейс Bitrix:

**Настройки → Интеграция с соцсетями → Авторизация через соцсети**

Активные соцсети автоматически доступны в модуле.

### SMS провайдер

[](#sms-провайдер)

**Настройки → Настройки продукта → SMS-провайдеры**

Модуль использует настроенный в Bitrix SMS-провайдер.

Основные компоненты
-------------------

[](#основные-компоненты)

### AuthService

[](#authservice)

Высокоуровневый API для аутентификации:

- `login()` — Вход пользователя
- `register()` — Регистрация
- `refreshTokens()` — Обновление JWT токенов
- `logout()` — Выход

### AuthManager

[](#authmanager)

Координатор аутентификаторов:

- `authenticate()` — Делегирует аутентификацию нужному authenticator
- `register()` — Регистрация через authenticator
- `getAvailable()` — Список доступных методов

### UserRepository

[](#userrepository)

Репозиторий для работы с пользователями:

- `getById()`, `getByEmail()`, `getByPhone()`
- `getCurrentUser()` — Текущий пользователь
- `add()`, `update()`, `save()`, `delete()`

### UserService

[](#userservice)

Бизнес-логика:

- `changePassword()`, `restorePassword()`
- `updateProfile()`

### JwtTokenManager

[](#jwttokenmanager)

Управление JWT:

- `generateTokenPair()` — Генерация access + refresh
- `validateAccessToken()`, `validateRefreshToken()`
- `refreshTokens()` — Обновление токенов
- `revokeRefreshToken()` — Отзыв токена

### Phone

[](#phone)

Value object для телефонов:

- `fromString()` — Создание из строки
- `formatE164()`, `formatInternational()`, `formatNational()`
- `isValid()`, `getCountryCode()`, `getRegionCode()`

Примеры использования
---------------------

[](#примеры-использования)

### Аутентификация по телефону

[](#аутентификация-по-телефону)

```
// Шаг 1: Отправка SMS кода
$credentials = new AuthCredentialsDto(
    type: 'phone',
    phone: '+79991234567'
);

$result = $authService->login($credentials);
// Код отправлен на телефон

// Шаг 2: Проверка кода
$credentials = new AuthCredentialsDto(
    type: 'phone',
    phone: '+79991234567',
    codeVerify: '1234'
);

$result = $authService->login($credentials);
// Пользователь авторизован
```

### Обновление JWT токенов

[](#обновление-jwt-токенов)

```
$jwtManager = service(JwtTokenManager::class);

$result = $jwtManager->refreshTokens($oldRefreshToken);

if ($result->isSuccess()) {
    $newAccessToken = $result->getData()['accessToken'];
    $newRefreshToken = $result->getData()['refreshToken'];
}
```

### Middleware для защищенных API

[](#middleware-для-защищенных-api)

```
class JwtMiddleware
{
    public function handle(): ?int
    {
        $jwtManager = service(JwtTokenManager::class);
        $token = $this->extractToken();

        $result = $jwtManager->validateAccessToken($token);

        if (!$result->isSuccess()) {
            http_response_code(401);
            echo json_encode(['error' => 'Unauthorized']);
            die();
        }

        return $result->getData()['userId'];
    }

    protected function extractToken(): ?string
    {
        // Сначала Authorization header (мобильные приложения)
        $header = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
        if (preg_match('/Bearer\s+(.*)$/i', $header, $matches)) {
            return $matches[1];
        }

        // Затем httpOnly cookie (веб-приложения)
        return $_COOKIE['access'] ?? null;
    }
}
```

**Преимущества httpOnly cookies:**

- 🔒 Защита от XSS атак
- 🚀 Автоматическая отправка
- 🛡️ Защита от CSRF

Расширение
----------

[](#расширение)

### Кастомный аутентификатор

[](#кастомный-аутентификатор)

```
use Beeralex\User\Auth\Contracts\AuthenticatorContract;

class BiometricAuthenticator implements AuthenticatorContract
{
    public function getKey(): string { return 'biometric'; }
    public function getTitle(): string { return 'Биометрия'; }

    public function authenticate(AuthCredentialsDto $credentials): Result
    {
        // Ваша логика биометрической аутентификации
    }
}
```

Регистрация в `/local/.settings_extra.php`:

```
return [
    'beeralex.user' => [
        'value' => [
            'container' => [
                'AuthManager' => [
                    'constructorParams' => static function() {
                        $authenticators = [
                            service(EmailAuthenticator::class),
                            service(BiometricAuthenticator::class),
                        ];
                        // ...
                    }
                ]
            ]
        ]
    ]
];
```

Документация
------------

[](#документация)

Полная документация доступна в папке [`/docs/`](docs/):

- **[Начало работы](docs/getting-started.md)** — Установка, настройка, первые шаги
- **[Сущность User](docs/user-entity.md)** — User, UserRepository, UserService, Factory, Builder
- **[Аутентификация](docs/authentication.md)** — AuthManager, AuthService, Authenticators, Validators
- **[JWT токены](docs/jwt-tokens.md)** — JwtTokenManager, сессии, middleware
- **[Работа с телефонами](docs/phone.md)** — Phone класс, валидация, форматирование
- **[Социальная аутентификация](docs/social-auth.md)** — Google, Yandex, VK, custom провайдеры
- **[Расширение модуля](docs/extending.md)** — Кастомные authenticators, validators, DI override

Лицензия
--------

[](#лицензия)

Proprietary

Автор
-----

[](#автор)

Beeralex

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance93

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~13 days

Total

6

Last Release

37d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/77bd3b8ad5192c498ba8d5a70ae80d7d73e8d13dda7989920a4fa47711fcb8c2?d=identicon)[BkycHblu-6oPwuK](/maintainers/BkycHblu-6oPwuK)

---

Top Contributors

[![BkycHblu-6oPwuK](https://avatars.githubusercontent.com/u/122775450?v=4)](https://github.com/BkycHblu-6oPwuK "BkycHblu-6oPwuK (6 commits)")

### Embed Badge

![Health badge](/badges/beeralex-beeralexuser/health.svg)

```
[![Health](https://phpackages.com/badges/beeralex-beeralexuser/health.svg)](https://phpackages.com/packages/beeralex-beeralexuser)
```

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k96.9M674](/packages/laravel-socialite)[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k85.0M531](/packages/laravel-passport)[google/auth

Google Auth Library for PHP

1.4k272.7M162](/packages/google-auth)[kreait/firebase-php

Firebase Admin SDK

2.4k39.7M72](/packages/kreait-firebase-php)[shopify/shopify-api

Shopify API Library for PHP

4634.8M16](/packages/shopify-shopify-api)[thenetworg/oauth2-azure

Azure Active Directory OAuth 2.0 Client Provider for The PHP League OAuth2-Client

2509.6M48](/packages/thenetworg-oauth2-azure)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
