Подстановка данных в зависимости от текущего пользователя биллинга

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
Admin (Обсуждение | вклад)
(Новая: Функционал доступен от 4.6 версии. Актуален для случаев, когда нужно вывести какую-либо информацию в ш...)
Следующая правка →

Версия 13:39, 4 декабря 2009

Функционал доступен от 4.6 версии.

Актуален для случаев, когда нужно вывести какую-либо информацию в шаблоне карточки договора либо счёта модуля Bill в зависимости от текущего пользователя биллинга. Например, номер доверенности, Ф.И.О. пользователя. Для примера рассмотрим случай, когда необходим вывод параметра dover - номер доверенности.

В конфурации сервера биллинга надо прописать jaas.subject=1, затем перезапустить сервер. Создадим библиотеку скриптов с именем user.

import java.security.AccessController;
import javax.security.auth.Subject;
import bitel.billing.server.admin.bean.User;
import bitel.billing.server.admin.bgsecure.bean.UserLoginModule.UserPrincipal;
 
public User getCurrentUser()
{
	Subject subject = Subject.getSubject( AccessController.getContext() );
	if( subject != null )
	{
		for( UserPrincipal userPrincipal : subject.getPrincipals( UserPrincipal.class ) )
		{
			return userPrincipal.getUser();
		}
	}
 
	return null;
}
 
public String getCurrentUserParam( String paramName )
{
	String result = "";
	//
	Integer currentUserId = getCurrentUserId();
	if( currentUserId != null )
	{
		if( currentUserId == 1 )		
		{
			if( "dover".equals( paramName ) )
			{
				result = "на осн. доверенности 1 от 23.33.33";
			}
			else if ( "param2".equals( paramName ) )
			{}
		}	
	}
	//
	return result;
}

В желаемом XSLT шаблоне вверху должно быть так (тут важен определённый неймспейс и xalan и script и описание xalan:component):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:fo="http://www.w3.org/1999/XSL/Format"
	xmlns:svg="http://www.w3.org/2000/svg"
	xmlns:xalan="http://xml.apache.org/xalan" 
	xmlns:script="bitel.billing.server.util.exslt.Scripting"	
	version="1.0">
 
	<xalan:component prefix="script" functions="invoke">
		<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.Scripting"/>
	</xalan:component>
.........

Скорректируйте заголовок.

3) В месте, где нужно подставить параметр с именем dover текущего юзера делаете так:

<xsl:value-of select="script:invoke('user','getCurrentUserParam', 'dover')" />

Соответственно, вы можете придумывать новые имена параметров, только не забывайте описывать их значения в скрипте для каждого юзера.. В примере описан параметр для юзера с кодом 1 (admin). Данный метод удобен тем, что позволяет в отличие от inline параметров модуля Bill делать глобальные определения параметров пользователей для всего биллинга и всех его модулей.

Ссылки по теме:

Личные инструменты