Кастомизация нового личного кабинета

Редактирование файлов

Файлы конфигурации, а также .xhtml-файлы можно редактировать. Однако, чтобы при очередном обновлении отредактированные файлы не перезаписались файлами из сборки, необходимо создать рядом файл с именем исходного файла плюс суффикс(расширение) .orig. Например, перед редактированием файла просто создайте его копию добавив окончание .orig. В этом случае при обновлении файл из сборки запишется не в исходный файл, а в файл .orig, а исходный, отредактированный вами останется без изменений.

Вход в личный кабинет с другой страницы

Можно создать форму входа в личный кабинет биллинга, например, на странице вашего сайта. Для этого URL (action) формы должен указывать на index.xhtml, а также параметры для аутентификации:

  • authMode - режим авторизации из mybgbilling-conf.groovy, число (порядковый номер начиная c нуля из списка authentication.modes) или строка (значение поля authenticationMode.mode, если эти значения уникальны). Если поле не указано, то используется первый режим аутентификации из списка;

  • username - номер договора для authenticationMode.mode=contract или логин Inet для authenticationMode.mode=login (authenticationMode.module=inet);

  • password - пароль для username.

Например, для такой конфигурации:

modes = [
authenticationMode {
mode = 'contract'
},
authenticationMode {
mode = 'login'
module = 'inet'
moduleId = 13
},
authenticationMode {
mode = 'ip'
module = 'inet'
moduleId = 13
role = 'unauthCustomer'
filter = { contract -> contractInGroup( contract, [4, 8, 15, 16, 23, 42] ) }
}
]

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

<form action="lk.provider.ru/index.xhtml">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>

Для аутентификации по логину Inet:

<form action="lk.provider.ru/index.xhtml">
<input type="hidden" name="authMode" value="1">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>

Для аутентификации по IP-адресу:

<form action="lk.provider.ru/index.xhtml">
<input type="hidden" name="authMode" value="ip">
<input type="submit">
</form>

Или, для последнего случая, просто ссылкой:

Аутентификация по IP-адресу без страницы логина
<a href="lk.provider.ru/index.xhtml?authMode=ip">Личный кабинет</a>

Ссылка на страницу

В ссылке на личный кабинет можно указывать конкретную страницу (ядра и helpdesk), для этого в URL нужно указать параметр page со значением страницы, как она прописана в mybgbilling-menu.groovy. Например:

<a href="lk.provider.ru/index.xhtml?page=plugins/helpdesk/helpdesk">Поддержка</a>

Данный параметр можно совместить с аутентификацией с другой страницы (например, аутентификацией по IP-адресу):

<a href="lk.provider.ru/index.xhtml?authMode=ip&page=kernel/payment">Оплатить</a>

Страница будет открыта, только если к ней разрешен доступ в mybgbilling-menu.groovy.

Ограничение доступа

Для некоторых режимов аутетификации можно ограничить доступ к различным действиям и пунктам меню. Это может быть удобно, например, для режима аутентификации по IP-адресу. Для этого нужно указать в режиме аутентификации role = 'unauthCustomer':

modes = [
...
authenticationMode {
mode = 'ip'
module = 'inet'
moduleId = 13
role = 'unauthCustomer'
//filter = { contract -> contractInGroup( contract, [4, 8, 15, 16, 23, 42] ) }
}
]

В этому случае, если абонент аутентифицируется через данный режим, в mybgbilling-menu.groovy и mybgbilling-conf.groovy вызов isCustomer() будет возвращать false. Соответственно, например, данный пункт меню в этом случае будет недоступен абоненту:

// Тарифные опции
menu( page: "kernel/tariffOptions", icon: "fa-cogs", title: "menu.tariffOptions", show: isCustomer() ),

Т.к. у него параметр show зависит от isCustomer(). А изменение лимита запрещено (даже если пункт меню "Лимит" доступен), т.к. в mybgbilling-conf.groovy указана зависимость:

// limit.xhtml
limit {
// возможность изменения лимита договора
limitChange = { contract -> (contract.balanceMode == (byte)1) && isCustomer() }
}