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.automaticroleprovider.service;
35
36 import java.util.ArrayList;
37 import java.util.Collection;
38 import java.util.List;
39 import java.util.Locale;
40
41 import fr.paris.lutece.plugins.mylutece.business.LuteceUserRoleDescription;
42 import fr.paris.lutece.plugins.mylutece.service.IMyLuteceExternalRolesProvider;
43 import fr.paris.lutece.portal.business.role.Role;
44 import fr.paris.lutece.portal.business.role.RoleHome;
45 import fr.paris.lutece.portal.service.i18n.I18nService;
46 import fr.paris.lutece.portal.service.security.LuteceUser;
47
48
49
50
51
52
53 public class AutomaticRoleProvider implements IMyLuteceExternalRolesProvider
54 {
55
56
57 private List<AutomaticRoleConfiguration> _listAutomaticRoleConfiguration;
58
59
60
61
62 private static final String PROPERTY_PAGE_ROLE_DESCRIPTION_MESSAGE = "automaticroleprovider.automaticRoleProvider.roleDescriptionMessage";
63 private static final String PROPERTY_PAGE_ROLE_DESCRIPTION_MESSAGE_AUTOMATIC = "automaticroleprovider.automaticRoleProvider.roleDescriptionMessageAutomatic";
64
65 private static final String PROPERTY_PAGE_ROLE_DESCRIPTION_ERROR = "automaticroleprovider.automaticRoleProvider.roleDescriptionError";
66
67
68
69
70
71
72
73
74
75 public AutomaticRoleProvider(List<AutomaticRoleConfiguration> listAutomaticRoleConfiguration) {
76 super();
77 this._listAutomaticRoleConfiguration = listAutomaticRoleConfiguration;
78
79
80
81
82
83 }
84
85
86
87
88 @Override
89 public Collection<String> providesRoles( LuteceUser user )
90 {
91
92 List<String> listRoles=new ArrayList<String>();
93
94 if(this._listAutomaticRoleConfiguration!=null)
95 {
96 this._listAutomaticRoleConfiguration.stream().filter(x-> x.getConfigurationPredicate().getPredicate().test(user, x)).forEach(x -> listRoles.add(x.getRole()));
97
98 }
99
100 return listRoles;
101
102
103
104 }
105
106
107
108
109 @Override
110 public List<LuteceUserRoleDescription> getLuteceUserRolesProvided(Locale locale)
111 {
112
113 List<LuteceUserRoleDescription> lisDescriptions=new ArrayList<LuteceUserRoleDescription>();
114 if(this._listAutomaticRoleConfiguration!=null)
115 {
116 this._listAutomaticRoleConfiguration.forEach(x -> {
117 Role role = RoleHome.findByPrimaryKey(x.getRole());
118 if (role != null) {
119 if(x.isAutomatic()!=null && x.isAutomatic() )
120 {
121
122 lisDescriptions.add(
123 new LuteceUserRoleDescription(role, LuteceUserRoleDescription.TYPE_AUTOMATIC_ASSIGNMENT,
124 I18nService.getLocalizedString(PROPERTY_PAGE_ROLE_DESCRIPTION_MESSAGE_AUTOMATIC,locale)));
125
126 }
127 else
128 {
129
130 lisDescriptions.add(
131 new LuteceUserRoleDescription(role, LuteceUserRoleDescription.TYPE_CONDITIONAL_ASSIGNMENT,
132 I18nService.getLocalizedString(PROPERTY_PAGE_ROLE_DESCRIPTION_MESSAGE, new Object[]{x.getLuteceUserAttributeKey(), x.getLuteceUserAttributeValue()},locale)));
133 }
134 }
135 else
136 {
137 Role roleEmty=new Role();
138 roleEmty.setRole(x.getRole());
139 lisDescriptions.add(
140 new LuteceUserRoleDescription(roleEmty, LuteceUserRoleDescription.TYPE_CONDITIONAL_ASSIGNMENT,
141 I18nService.getLocalizedString(PROPERTY_PAGE_ROLE_DESCRIPTION_ERROR,locale)));
142
143
144 }
145
146 }
147
148 );
149 }
150
151
152 return lisDescriptions;
153
154 }
155
156
157 public List<AutomaticRoleConfiguration> getListAutomaticRoleConfiguration() {
158 return _listAutomaticRoleConfiguration;
159 }
160
161
162
163
164 }