Сессия посетителя
API сессии позволяет проверить вход посетителя и получить имя, аватар и ссылки для меню профиля. Начало работы с учетной записью — в гайде «Быстрый старт».
| Метод | Эндпоинт | Действие |
|---|---|---|
| GET | /wp-json/onpress/v1/session/me | Проверить вход посетителя |
Проверить вход посетителя
GET https://onpress.pro/wp-json/onpress/v1/session/me
Эндпоинт возвращает состояние входа текущего посетителя на onpress.pro. Гостю он отдает ссылки для входа и создания сайта, вошедшему пользователю — публичные поля профиля и ссылки на его сайты, профиль и выход.
В примере API=https://onpress.pro/wp-json/onpress/v1. Запрос выполняется на основном домене onpress.pro; SITE и OP_TOKEN здесь не используются. Правила персональных API-токенов описаны в разделе «Авторизация».
API="https://onpress.pro/wp-json/onpress/v1"
curl --request GET "$API/session/me" \
--header 'Accept: application/json'
Без cookies действительной сессии этот запрос возвращает гостевое состояние с HTTP 200.
Параметры запроса
Путь. Параметров пути нет.
Строка запроса. Параметров нет. site_id и персональный API-токен не требуются: посетитель определяется по сессии браузера.
Тело. Тело запроса не используется.
Заголовки. Сессию браузер передает в cookies автоматически; читать HttpOnly cookies из JavaScript не нужно.
| Заголовок | Тип | Обязателен | По умолчанию | Описание |
|---|---|---|---|---|
Cookie | string | Нет | Нет | Cookies действительной сессии. Без них ответ описывает гостя. |
Origin | string | Нет | Нет | Если передан, должен совпадать с https://onpress.pro. |
Sec-Fetch-Site | string | Нет | Нет | Значение cross-site приводит к отказу; браузер задает заголовок сам. |
Чтобы проверить посетителя из шапки сайта, выполните запрос после загрузки страницы. Браузер передаст cookies того же домена, а результат подскажет, какое меню показать.
const response = await fetch('/wp-json/onpress/v1/session/me', {
credentials: 'same-origin',
cache: 'no-store',
headers: { Accept: 'application/json' }
});
const session = await response.json();
Ответ
Успешный запрос возвращает HTTP 200 и объект JSON. Отсутствие входа — обычное состояние, а не ошибка 401.
| Поле | Тип | Описание |
|---|---|---|
authenticated | boolean | Есть ли действительная сессия пользователя. |
user | object или null | Публичные поля вошедшего пользователя; у гостя null. |
user.id | integer | Идентификатор пользователя. |
user.name | string | Имя для отображения. Если имя пустое или является адресом почты, возвращается Пользователь. |
user.avatar_url | string | URL аватара. |
links | object | Ссылки для текущего состояния входа. |
links.login | string | Вход; присутствует у гостя. |
links.create | string | Создание сайта; присутствует у гостя. |
links.sites | string | Переход к сайтам пользователя или созданию первого сайта; присутствует при входе. |
links.profile | string | Подходящая пользователю страница профиля; присутствует при входе. |
links.logout | string | Ссылка выхода для текущей сессии; присутствует при входе. |
Гость.
{
"authenticated": false,
"user": null,
"links": {
"login": "https://onpress.pro/enter/",
"create": "https://onpress.pro/create/v2/base/"
}
}
Пользователь вошел.
{
"authenticated": true,
"user": {
"id": 42,
"name": "Анна",
"avatar_url": "https://example.org/avatar.webp"
},
"links": {
"sites": "https://onpress.pro/dashboard/sites",
"profile": "https://onpress.pro/dashboard/settings/profile",
"logout": "https://onpress.pro/enter/?action=logout&_wpnonce=example"
}
}
Используйте links.sites, links.profile и links.logout целиком: их адреса зависят от пользователя и способа входа. links.logout может содержать подтверждение выхода или вести на главную; не собирайте ссылку самостоятельно. Почта, API-токен и cookies сессии в ответ не входят.
Ответ содержит Cache-Control: private, no-store, max-age=0, Pragma: no-cache и Vary: Cookie, Origin. Не сохраняйте его в общедоступный HTML, статический фрейм, набор данных или общий кеш. При сетевой ошибке оставьте гостевое меню и повторите запрос при следующей загрузке страницы.
Ошибки
| Код | HTTP | Когда | Что делать |
|---|---|---|---|
same_origin_required | 403 | Передан чужой Origin либо Sec-Fetch-Site: cross-site. | Выполнять запрос со страницы onpress.pro на том же домене. |
Отсутствующая или недействительная сессия возвращает гостевой ответ 200, а не ошибку. Этот эндпоинт описывает меню профиля; он не заменяет авторизацию остальных запросов к API.