Данный метод не принимает параметров и возвращает текущий контекст пользователя,
необходимый мини-приложениям для управления сессиями и интерфейсом.
Платформы
- B2B-Web
Возвращаемое значение
В случае успешного выполнения вы получите JSON-объект следующего типа:
Возвращаемый тип
Пример возвращаемого значения
typescripttype GetLaunchParamsData = { condoUserId: string | null // ID текущего пользователя condoUserType: 'staff' | 'resident' // Тип пользователя condoLocale: string // Текущая локаль пользователя. ("en" / "ru") condoContextEntity: 'Organization' | 'Resident' // Тип контекстной сущности пользователя condoContextEntityId: string | null // ID контекстной сущности пользователя }
Про тип пользователя и контекстную сущность
С типом пользователя все просто. В B2B приложениях это всегда сотрудник (
staff), в B2C приложениях - житель (resident).condoContextEntity в B2B-приложениях
B2B приложение всегда открывает сотрудник какой-то организации.
В этом случае вы получите её ID в поле
condoContextEntityId, а condoContextEntity будет всегда иметь значение Organization.
При этом пользователь может быть сотрудником нескольких организаций, однако при ее смене в основном интерфейсе приложения происходит перезагрузка IFrame текущего мини-приложения.
Поэтому вы можете безболезненно повесить обработчик CondoWebAppGetLaunchParams на загрузку страницы (window.addEventListener("load", () => {...})) в случае чистого JS или useEffect(() => {...}, []) в случае React).Несмотря на то, что IFrame B2B-приложения перезагружается при смене пользователя / организации,
в вашем приложении могут остаться куки от старого пользователя, так как политика браузеров не позволяет нам чистить их за вас.
Поэтому при загрузке приложения необходимо сравнивать пользователя из CondoWebAppGetLaunchParams с текущим пользователем
и в случае несовпадения - производить повторную авторизацию
condoContextEntity в B2C-приложениях
B2C приложение всегда открывает житель. Житель может проживать в нескольких адресах (помещениях), каждому из которых соответствует своя сущность
Resident, id которой вы можете получить
при открытии B2C приложения.Пример использования
typescriptimport '@/styles/globals.css' import { cookies } from 'next/headers' import React, { useEffect } from 'react' import bridge from '@open-condo/bridge' import type { AppProps } from 'next/app' export default function App ({ Component, pageProps }: AppProps): React.ReactNode { useEffect(() => { bridge.send('CondoWebAppGetLaunchParams').then(data => { console.log(data.condoLocale) // Установите локаль мини-приложения, если у вас имеется таковая if (cookies().get('currentUserId')?.value !== data.condoUserId) { // Если текущий пользователь в куках не совпадает с пришедшим - ведите пользователя на авторизацию } }).catch((error) => { // В случае ошибки - попытайтесь еще или ведите пользователя на авторизацию }) }, []) return ( <Component {...pageProps} /> ) }