-
Notifications
You must be signed in to change notification settings - Fork 0
API Users
Vladislav edited this page May 3, 2025
·
2 revisions
Контроллер: Api::V1::UsersController
Версия: v1
Слой: Публичный API и Аутентифицированный API
Некоторые методы доступны без токена, остальные требуют access-токен
Контроллер предоставляет CRUD-операции над пользователями, а также специальный endpoint /me для получения текущего авторизованного пользователя.
Все действия защищены политиками доступа (UserPolicy), логика работы с деактивацией (is_active) встроена в сериалайзер и ApiErrorHandling.
Получить данные текущего пользователя.
{
"id": "1e2c...",
"phone": "+77001234567",
"email": "user@test.com",
"role": "user",
"is_active": true
}| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ✅ Да |
| 🔐 Политики доступа | Только авторизованные |
| 🔗 Зависимости | Только если пользователь активен |
- Текущий пользователь извлекается из JWT access-токена
- Если пользователь
is_active: false, возвращается ошибка 410
- Покупатель заходит в профиль
- Продавец смотрит, кто он
- Неавторизованный пользователь —
401 Unauthorized
Публичный просмотр профиля пользователя
{
"id": "1e2c...",
"phone": "+77001234567",
"role": "user",
"email": null
}{
"error": {
"key": "user.deleted",
"message": "Пользователь удалил свой аккаунт",
"code": 410,
"status": "gone"
}
}| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ❌ Нет |
| 🔐 Политики доступа | UserPolicy#show? → true |
| 🔗 Зависимости | user.is_active == true |
- Доступен всем
- Если пользователь удалён —
410 Gone - Email скрывается
- Покупатель смотрит профиль продавца
- Продавец открывает другого пользователя
- Удалённый пользователь — заглушка
Регистрация нового пользователя
| Поле | Тип | Обязательный | Пример |
|---|---|---|---|
| phone | string | ✅ | +77005554433 |
| string | ❌ | user@test.com | |
| password | string | ✅ | Test1234! |
| password_confirmation | string | ✅ | Test1234! |
| country_code | string | ✅ | KZ |
Например:
{
"user": {
"country_code": "KZ",
"phone": "+77010000020",
"email": "test@test.com",
"password": "UserPassword1@",
"password_confirmation": "UserPassword1@"
}
}{
"id": "b45c...",
"phone": "+77005554433",
"role": "user"
}| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ❌ Нет |
| 🔐 Политики доступа | UserPolicy#create? → true |
| 🔗 Зависимости | Нет |
- Регистрация нового пользователя
- Только номер и пароль
- Попытка указать superadmin — игнорируется
Редактирование пользователя
{
"id": "1e2c...",
"phone": "+77005553322",
"email": "new@mail.com"
}| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ✅ Да |
| 🔐 Политики доступа | Только сам пользователь или superadmin/supermanager |
| 🔗 Зависимости | Пользователь активен (is_active: true) |
- Обновление номера
- Админ меняет email
- Продавец меняет пароль
Мягкое удаление пользователя
{
"message": "Аккаунт деактивирован"
}| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ✅ Да |
| 🔐 Политики доступа | Только сам пользователь или superadmin/supermanager |
| 🔗 Зависимости | Пользователь существует |
- Пользователь удаляет себя
- Админ блокирует пользователя
- Повторный вход невозможен
Просмотр всех пользователей (админ)
[
{
"id": "1e2c...",
"phone": "+7700...",
"role": "user"
}
]| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ✅ Да |
| 🔐 Политики доступа | Только superadmin/supermanager |
| 🔗 Зависимости | - |
- Админ смотрит всех
- Просмотр неактивных
- Проверка связей
| Сущность | Назначение |
|---|---|
User |
Основная модель |
UserPolicy |
Контроль доступа |
UserSerializer |
Скрытие email, статус активен |
ApiErrorHandling |
Стандартизация ошибок |
- Фильтрация по ролям
- Поддержка аватаров
- Soft-restore аккаунта