Редактирование файлов
Файлы конфигурации, а также .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>
Или, для последнего случая, просто ссылкой:
<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() } }