1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.mylutece.modules.wssodatabase.authentication.service;
35
36 import fr.paris.lutece.plugins.mylutece.authentication.MultiLuteceAuthentication;
37 import fr.paris.lutece.plugins.mylutece.business.attribute.IAttribute;
38 import fr.paris.lutece.plugins.mylutece.modules.wssodatabase.authentication.IdxWSSODatabaseAuthentication;
39 import fr.paris.lutece.plugins.mylutece.modules.wssodatabase.authentication.business.WssoProfilHome;
40 import fr.paris.lutece.plugins.mylutece.modules.wssodatabase.authentication.business.WssoUser;
41 import fr.paris.lutece.plugins.mylutece.modules.wssodatabase.authentication.business.WssoUserRoleHome;
42 import fr.paris.lutece.portal.service.plugin.Plugin;
43 import fr.paris.lutece.portal.service.plugin.PluginService;
44 import fr.paris.lutece.portal.service.spring.SpringContextService;
45 import fr.paris.lutece.portal.service.util.AppLogService;
46 import fr.paris.lutece.util.xml.XmlUtil;
47
48 import java.text.SimpleDateFormat;
49 import java.util.Collection;
50 import java.util.List;
51 import java.util.Locale;
52
53 import org.apache.commons.collections.CollectionUtils;
54 import org.apache.commons.lang.StringUtils;
55
56
57
58
59
60
61
62 public class WssoDatabaseService
63 {
64 private static final String AUTHENTICATION_BEAN_NAME = "mylutece-wssodatabase.authentication";
65
66 private static final String CONSTANT_XML_USER = "user";
67 private static final String CONSTANT_XML_GUID = "guid";
68 private static final String CONSTANT_XML_LAST_NAME = "last_name";
69 private static final String CONSTANT_XML_FIRST_NAME = "first_name";
70 private static final String CONSTANT_XML_EMAIL = "email";
71 private static final String CONSTANT_XML_DATE = "date";
72
73 private static final String CONSTANT_XML_ROLES = "roles";
74 private static final String CONSTANT_XML_ROLE = "role";
75
76 private static final String CONSTANT_XML_PROFILS = "profils";
77 private static final String CONSTANT_XML_PROFIL = "profil";
78
79 private static WssoDatabaseService _singleton = new WssoDatabaseService( );
80
81
82
83
84
85 public void init( )
86 {
87 WssoUser.init( );
88
89 IdxWSSODatabaseAuthentication baseAuthentication = (IdxWSSODatabaseAuthentication) SpringContextService
90 .getPluginBean( WssoDatabasePlugin.PLUGIN_NAME, AUTHENTICATION_BEAN_NAME );
91
92 if ( baseAuthentication != null )
93 {
94 MultiLuteceAuthentication.registerAuthentication( baseAuthentication );
95 }
96 else
97 {
98 AppLogService
99 .error( "IdxWSSODatabaseAuthentication not found, please check your wssodatabase_context.xml configuration" );
100 }
101 }
102
103
104
105
106
107
108 public static WssoDatabaseService getInstance( )
109 {
110 return _singleton;
111 }
112
113
114
115
116
117
118
119
120
121
122
123
124 public String getXmlFromUser( WssoUser user, boolean bExportRoles, boolean bExportGroups, boolean bExportProfils,
125 List<IAttribute> listAttributes, Locale locale )
126 {
127 Plugin databasePlugin = PluginService.getPlugin( WssoDatabasePlugin.PLUGIN_NAME );
128
129 StringBuffer sbXml = new StringBuffer( );
130 XmlUtil.beginElement( sbXml, CONSTANT_XML_USER );
131 XmlUtil.addElement( sbXml, CONSTANT_XML_GUID, user.getGuid( ) );
132 XmlUtil.addElement( sbXml, CONSTANT_XML_LAST_NAME, user.getLastName( ) );
133 XmlUtil.addElement( sbXml, CONSTANT_XML_FIRST_NAME, user.getFirstName( ) );
134 XmlUtil.addElement( sbXml, CONSTANT_XML_EMAIL, user.getEmail( ) );
135 if ( user.getDateLastLogin( ) != null )
136 {
137 SimpleDateFormat dateFormat = new SimpleDateFormat( "dd/MM/yyyy" );
138 XmlUtil.addElement( sbXml, CONSTANT_XML_DATE, dateFormat.format( user.getDateLastLogin( ) ) );
139 }
140 else
141 {
142 XmlUtil.addElement( sbXml, CONSTANT_XML_DATE, StringUtils.EMPTY );
143 }
144 if ( bExportRoles )
145 {
146 Collection<String> userRoleList = WssoUserRoleHome.findRolesListForUser( user.getMyluteceWssoUserId( ),
147 databasePlugin );
148
149 if ( CollectionUtils.isNotEmpty( userRoleList ) )
150 {
151 XmlUtil.beginElement( sbXml, CONSTANT_XML_ROLES );
152
153 for ( String strRole : userRoleList )
154 {
155 XmlUtil.addElement( sbXml, CONSTANT_XML_ROLE, strRole );
156 }
157
158 XmlUtil.endElement( sbXml, CONSTANT_XML_ROLES );
159 }
160 }
161
162 if ( bExportProfils )
163 {
164 Collection<String> userProfilList = WssoProfilHome.findWssoProfilsForUser( user.getMyluteceWssoUserId( ),
165 databasePlugin );
166
167 if ( CollectionUtils.isNotEmpty( userProfilList ) )
168 {
169 XmlUtil.beginElement( sbXml, CONSTANT_XML_PROFILS );
170
171 for ( String strProfil : userProfilList )
172 {
173 XmlUtil.addElement( sbXml, CONSTANT_XML_PROFIL, strProfil );
174 }
175
176 XmlUtil.endElement( sbXml, CONSTANT_XML_PROFILS );
177 }
178 }
179
180 XmlUtil.endElement( sbXml, CONSTANT_XML_USER );
181
182 return sbXml.toString( );
183 }
184 }