Через этот интерфейс можно работать с внешним порталом в разделе.

Hierarchy

  • Portal

Properties

Readonly namespace

namespace: string

Код раздела, в рамках которого создан портал.

Readonly profiles

Управление профилями пользователей.

Readonly published

published: boolean

Опубликован ли портал. После публикации портал становится доступен внешним пользователям.

Methods

addProfile

  • Метод устарел. Предоставить для указанного профиля доступ в портал.

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

    const user = await System.users.search().first();
    if (user) {
        const profile = await Namespace.portal.profiles.getByUser(user);
        if (profile) {
            await Namespace.portal.addProfile(profile);
        }
    }
    
    deprecated

    Используйте метод grantAccess().

    Parameters

    Returns Promise<void>

addUser

  • Создать пользователя портала.

    Метод создает нового пользователя портала по существующему профилю со статусом Приглашен.

    На данный момент профиль может находится только в системной коллекции Внешние пользователи (_user_profiles).

    Метод генерирует ошибки:

    — с кодом 400, если переданный профиль не является элементом коллекции Внешние пользователи;

    — с кодом 409, если уже существует пользователь с указанным email или настройками OAuth2-авторизации;

    — c кодом 412, если отсутствуют доступные лицензии портала;

    — с кодом 500 во всех остальных случаях.

    Parameters

    • portalUserProfile: ApplicationItemRef<UserProfileItemData, ItemData>

      Профиль пользователя.

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

      const newPortalUser = Global.ns._system_catalogs.app._user_profiles.create();
      newPortalUser.data.email = "user.email@email.com";
      newPortalUser.data.fullname = <TFullName>{
          firstname: 'firstname',
          middlename: 'middlename',
          lastname: 'lastname',
      };
      await newPortalUser.save();
      const user = await Namespace.portal.addUser(
          newPortalUser,
      );
      

    Returns Promise<UserItem>

addUserWithoutConfirmation

  • Добавить пользователя портала по существующему профилю с OAuth2-авторизацией.

    Внимание: после создания пользователя реквизиты для авторизации по OAuth2 нельзя будет изменить.

    Метод создает нового пользователя портала по профилю и добавляет пользователю реквизиты для авторизации по OAuth2. На данный момент профиль может находится только в системной коллекции Внешние пользователи (_user_profiles). Метод генерирует ошибки:

    — с кодом 400, если не переданы параметры для авторизации по OAuth2 или переданный профиль не является элементом коллекции Внешние пользователи;

    — с кодом 409, если уже существует пользователь с указанным email или настройками OAuth2-авторизации;

    — c кодом 412, если отсутствуют доступные лицензии портала;

    — с кодом 500 во всех остальных случаях.

    Parameters

    • portalUserProfile: ApplicationItemRef<ItemData, ItemData>

      Профиль пользователя.

    • auth: AuthData

      Доступные методы внешней авторизации.

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

      const newPortalUser = Global.ns._system_catalogs.app._user_profiles.create();
      newPortalUser.data.email = "user.email@email.com";
      newPortalUser.data.fullname = <TFullName>{
          firstname: 'firstname',
          middlename: 'middlename',
          lastname: 'lastname',
      };
      await newPortalUser.save();
      const oAuth2Records: OAuth2Record[] = [
          <OAuth2Record>{
              providerId: 'a0524184-737e-4680-a549-1e4e94c01707',
              externalId: 'abcd123',
          }
      ]
      const auth: AuthData = <AuthData>{
          oauth2: oAuth2Records,
      }
      await Namespace.portal.addUserWithoutConfirmation(
          newPortalUser,
          auth,
      );
      

    Returns Promise<void>

denyAccess

  • Запретить для указанного профиля доступ в портал.

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

    const user = await System.users.search().first();
    if (user) {
        const profile = await Namespace.portal.profiles.getByUser(user);
        if (profile) {
            await Namespace.portal.denyAccess(profile);
        }
    }
    

    Parameters

    Returns Promise<void>

generateELMAAppUrl

  • generateELMAAppUrl(withAuthToken?: undefined | false | true): Promise<string>
  • Сгенерировать ссылку в портал для мобильного приложения или приложения для ПК.

    Если в параметр withAuthToken передано значение true, в сгенерированную ссылку будет включен короткоживущий токен аутентификации для текущего пользователя, который позволяет автоматически (без дополнительной процедуры аутентификации) войти в целевой портал.

    Метод доступен только в клиентских скриптах.

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

    const ELMAAppUrl = await Namespace.portal.generateELMAAppUrl();
    

    Parameters

    • Optional withAuthToken: undefined | false | true

      Флаг включения в ссылку токена аутентификации (значение по умолчанию — false).

    Returns Promise<string>

getPages

  • Получить список страниц портала для текущего раздела.

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

    const pages = await Namespace.portal.getPages();
    

    Returns Promise<PortalPageInfo[]>

getSettings

  • Получить настройки портала.

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

    const settings = await Namespace.portal.getSettings();
    

    Returns Promise<PortalSettings>

grantAccess

  • Предоставить для указанного профиля доступ в портал.

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

    const user = await System.users.search().first();
    if (user) {
        const profile = await Namespace.portal.profiles.getByUser(user);
        if (profile) {
            await Namespace.portal.grantAccess(profile);
        }
    }
    

    Parameters

    Returns Promise<void>

removeProfile

  • Метод устарел. Запретить для указанного профиля доступ в портал.

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

    const user = await System.users.search().first();
    if (user) {
        const profile = await Namespace.portal.profiles.getByUser(user);
        if (profile) {
            await Namespace.portal.removeProfile(profile);
        }
    }
    
    deprecated

    Используйте метод denyAccess().

    Parameters

    Returns Promise<void>

setPortalUserAsInternal

  • setPortalUserAsInternal(portalUser: UserItemRef, _unsafe_ignore_oauth?: undefined | false | true): Promise<void>
  • Сделать пользователя портала внутренним пользователем системы.

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

    const portalUser = await Namespace.portal.profiles.getUser(profile);
    await Namespace.portal.setPortalUserAsInternal(portalUser);
    

    Parameters

    • portalUser: UserItemRef

      Пользователь портала.

    • Optional _unsafe_ignore_oauth: undefined | false | true

      Опасная опция. Использовать с осторожностью. Игнорирование настроек провайдера OAuth (значение по умолчанию — false).

    Returns Promise<void>

signupUrl

  • Получить ссылку для регистрации внешнего пользователя.

    Сформировать ссылку для регистрации с подтверждением контактных данных можно следующим образом:

    if (Context.data.user_profile) {
        const inviteUrl = await Namespace.portal.signupUrl(Context.data.user_profile);
    }
    

    Для формирования ссылки без подтверждения контактных данных для передачи ее доверенному лицу необходимо передать параметр withSign:

    if (Context.data.user_profile) {
        const inviteUrl = await Namespace.portal.signupUrl(Context.data.user_profile, {
            withSign: true
        });
    }
    

    Если требуется обновить ранее сформированную ссылку, необходимо передать параметр refresh:

    if (Context.data.user_profile) {
        const inviteUrl = await Namespace.portal.signupUrl(Context.data.user_profile, {
            refresh: true,
        });
    }
    

    Type parameters

    Parameters

    Returns Promise<string>