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
35 package fr.paris.lutece.plugins.mylutece.web;
36
37 import java.util.Collection;
38 import java.util.HashMap;
39 import java.util.List;
40 import java.util.Map;
41
42 import javax.servlet.http.HttpServletRequest;
43
44 import fr.paris.lutece.api.user.User;
45 import fr.paris.lutece.plugins.mylutece.authentication.MultiLuteceAuthentication;
46 import fr.paris.lutece.plugins.mylutece.business.LuteceUserRoleDescription;
47 import fr.paris.lutece.plugins.mylutece.service.ILuteceUserRolesProvidedDescription;
48 import fr.paris.lutece.plugins.mylutece.service.IMyLuteceExternalIdentityProviderService;
49 import fr.paris.lutece.plugins.mylutece.service.IMyLuteceExternalRolesProvider;
50 import fr.paris.lutece.plugins.mylutece.service.MyLuteceExternalIdentityService;
51 import fr.paris.lutece.plugins.mylutece.service.MyluteceExternalRoleService;
52 import fr.paris.lutece.plugins.mylutece.service.RoleResourceIdService;
53 import fr.paris.lutece.portal.business.user.AdminUser;
54 import fr.paris.lutece.portal.service.rbac.RBACService;
55 import fr.paris.lutece.portal.service.security.LuteceAuthentication;
56 import fr.paris.lutece.portal.service.security.SecurityService;
57 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
58 import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
59 import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
60
61
62
63
64 @Controller( controllerJsp = "ManageMylutece.jsp", controllerPath = "jsp/admin/plugins/mylutece/", right = "MYLUTECE_MANAGEMENT" )
65 public class ManageMyLuteceJspBean extends AbstractManageMyluteceJspBean
66 {
67
68 private static final String TEMPLATE_MANAGE_MYLUTECE = "/admin/plugins/mylutece/manage_mylutece.html";
69
70
71
72 private static final String PROPERTY_PAGE_TITLE_MANAGE_MYLUTECE = "mylutece.adminFeature.mylutece_management.name";
73
74
75
76 private static final String VIEW_MANAGE_MYLUTECE = "manageMylutece";
77
78
79 private static final String MARK_LUTECE_AUTHENTICATION = "authentication";
80 private static final String MARK_MAP_AUTH_ROLE_DESCRIPTION= "map_auth_role_description";
81 private static final String MARK_MAP_EXTERNAL_PROVIDER_ROLE_DESCRIPTION= "map_external_provider_role_description";
82 private static final String MARK_LOCALE = "locale";
83
84
85
86 private static final String MARK_EXTERNAL_ROLE_PROVIDERS= "external_roles_providers";
87 private static final String MARK_EXTERNAL_IDENTITY_PROVIDERS= "external_identity_providers";
88
89
90
91
92
93
94
95
96
97
98
99
100 @View( value = VIEW_MANAGE_MYLUTECE, defaultView = true )
101 public String getManageMylutece( HttpServletRequest request )
102 {
103
104 Map<String,Collection<LuteceUserRoleDescription>> mapAuthRolesDescrition=new HashMap<String, Collection<LuteceUserRoleDescription>>();
105 Map<String,Collection<LuteceUserRoleDescription>> mapExternalProviderRolesDescription=new HashMap<String, Collection<LuteceUserRoleDescription>>();
106
107 LuteceAuthentication luteceAuthentication=SecurityService.getInstance().getAuthenticationService();
108
109
110 if(luteceAuthentication.isMultiAuthenticationSupported())
111 {
112 for(LuteceAuthentication multiAuth:((MultiLuteceAuthentication)luteceAuthentication).getListLuteceAuthentication())
113 {
114 if(multiAuth instanceof ILuteceUserRolesProvidedDescription )
115 {
116 mapAuthRolesDescrition.put(multiAuth.getAuthServiceName(),filterRolesDescriptionByUser((ILuteceUserRolesProvidedDescription)multiAuth));
117 }
118 }
119
120 }
121 else
122 {
123 if(luteceAuthentication instanceof ILuteceUserRolesProvidedDescription )
124 {
125 mapAuthRolesDescrition.put(luteceAuthentication.getAuthServiceName(),filterRolesDescriptionByUser((ILuteceUserRolesProvidedDescription)luteceAuthentication));
126 }
127
128 }
129
130 List<IMyLuteceExternalRolesProvider> listMyluteceExternalRolesProvider= MyluteceExternalRoleService.getInstance().getProviders();
131 List<IMyLuteceExternalIdentityProviderService> listMyluteceExternalIdentiryProvider= MyLuteceExternalIdentityService.getInstance().getProviders();
132
133 int nCpt=0;
134
135 for(IMyLuteceExternalRolesProvider externalRoleProvider: listMyluteceExternalRolesProvider)
136 {
137 mapExternalProviderRolesDescription.put(Integer.toString(nCpt++),filterRolesDescriptionByUser(externalRoleProvider));
138
139 }
140
141
142 Map<String, Object> model = getModel( );
143 model.put( MARK_LOCALE, getLocale( ) );
144
145
146 model.put(MARK_LUTECE_AUTHENTICATION, luteceAuthentication);
147 model.put(MARK_EXTERNAL_ROLE_PROVIDERS, listMyluteceExternalRolesProvider);
148 model.put(MARK_EXTERNAL_IDENTITY_PROVIDERS, listMyluteceExternalIdentiryProvider);
149 model.put(MARK_MAP_AUTH_ROLE_DESCRIPTION, mapAuthRolesDescrition);
150 model.put(MARK_MAP_EXTERNAL_PROVIDER_ROLE_DESCRIPTION, mapExternalProviderRolesDescription);
151
152
153
154
155
156
157 return getPage( PROPERTY_PAGE_TITLE_MANAGE_MYLUTECE, TEMPLATE_MANAGE_MYLUTECE, model );
158 }
159
160
161 private <T extends ILuteceUserRolesProvidedDescription> Collection<LuteceUserRoleDescription> filterRolesDescriptionByUser( T luteceUserRolesProvidedDescription)
162 {
163
164 Collection<LuteceUserRoleDescription> rolesDescription=luteceUserRolesProvidedDescription.getLuteceUserRolesProvided(getLocale());
165 if(rolesDescription!=null)
166 {
167 rolesDescription = RBACService.getAuthorizedCollection( rolesDescription, RoleResourceIdService.PERMISSION_ASSIGN_ROLE, (User) getUser() );
168 rolesDescription = AdminWorkgroupService.getAuthorizedCollection( rolesDescription, (User) getUser( ) );
169 }
170 return rolesDescription;
171 }
172
173 }