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