1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.console.wizards.resources;
20
21 import java.util.ArrayList;
22 import java.util.LinkedHashMap;
23 import java.util.Map;
24 import java.util.stream.Collectors;
25 import org.apache.syncope.client.console.rest.PolicyRestClient;
26 import org.apache.syncope.client.console.wicket.markup.html.form.PolicyRenderer;
27 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
28 import org.apache.syncope.common.lib.policy.PolicyTO;
29 import org.apache.syncope.common.lib.to.ResourceTO;
30 import org.apache.syncope.common.lib.types.PolicyType;
31 import org.apache.wicket.extensions.wizard.WizardStep;
32 import org.apache.wicket.markup.html.WebMarkupContainer;
33 import org.apache.wicket.markup.html.form.DropDownChoice;
34 import org.apache.wicket.model.IModel;
35 import org.apache.wicket.model.LoadableDetachableModel;
36 import org.apache.wicket.model.PropertyModel;
37 import org.apache.wicket.model.ResourceModel;
38 import org.apache.wicket.spring.injection.annot.SpringBean;
39
40 public class ResourceSecurityPanel extends WizardStep {
41
42 private static final long serialVersionUID = -7982691107029848579L;
43
44 @SpringBean
45 protected PolicyRestClient policyRestClient;
46
47 protected final IModel<Map<String, String>> passwordPolicies = new LoadableDetachableModel<>() {
48
49 private static final long serialVersionUID = 5275935387613157437L;
50
51 @Override
52 protected Map<String, String> load() {
53 return policyRestClient.list(PolicyType.PASSWORD).stream().
54 collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
55 }
56 };
57
58 protected final IModel<Map<String, String>> accountPolicies = new LoadableDetachableModel<>() {
59
60 private static final long serialVersionUID = -2012833443695917883L;
61
62 @Override
63 protected Map<String, String> load() {
64 return policyRestClient.list(PolicyType.ACCOUNT).stream().
65 collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
66 }
67 };
68
69 protected final IModel<Map<String, String>> propagationPolicies = new LoadableDetachableModel<>() {
70
71 private static final long serialVersionUID = -2012833443695917883L;
72
73 @Override
74 protected Map<String, String> load() {
75 return policyRestClient.list(PolicyType.PROPAGATION).stream().
76 collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
77 }
78 };
79
80 protected final IModel<Map<String, String>> pullPolicies = new LoadableDetachableModel<>() {
81
82 private static final long serialVersionUID = -2012833443695917883L;
83
84 @Override
85 protected Map<String, String> load() {
86 return policyRestClient.list(PolicyType.PULL).stream().
87 collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
88 }
89 };
90
91 protected final IModel<Map<String, String>> pushPolicies = new LoadableDetachableModel<>() {
92
93 private static final long serialVersionUID = 9089911876466472133L;
94
95 @Override
96 protected Map<String, String> load() {
97 return policyRestClient.list(PolicyType.PUSH).stream().
98 collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName));
99 }
100 };
101
102 public ResourceSecurityPanel(final ResourceTO resourceTO) {
103 super();
104 setOutputMarkupId(true);
105
106 final WebMarkupContainer container = new WebMarkupContainer("container");
107 container.setOutputMarkupId(true);
108 container.setRenderBodyOnly(true);
109 add(container);
110
111
112
113
114 AjaxDropDownChoicePanel<String> passwordPolicy = new AjaxDropDownChoicePanel<>(
115 "passwordPolicy",
116 new ResourceModel("passwordPolicy", "passwordPolicy").getObject(),
117 new PropertyModel<>(resourceTO, "passwordPolicy"),
118 false);
119 passwordPolicy.setChoiceRenderer(new PolicyRenderer(passwordPolicies.getObject()));
120 passwordPolicy.setChoices(new ArrayList<>(passwordPolicies.getObject().keySet()));
121 ((DropDownChoice<?>) passwordPolicy.getField()).setNullValid(true);
122 container.add(passwordPolicy);
123
124
125
126
127
128 AjaxDropDownChoicePanel<String> accountPolicy = new AjaxDropDownChoicePanel<>(
129 "accountPolicy",
130 new ResourceModel("accountPolicy", "accountPolicy").getObject(),
131 new PropertyModel<>(resourceTO, "accountPolicy"),
132 false);
133 accountPolicy.setChoiceRenderer(new PolicyRenderer(accountPolicies.getObject()));
134 accountPolicy.setChoices(new ArrayList<>(accountPolicies.getObject().keySet()));
135 ((DropDownChoice<?>) accountPolicy.getField()).setNullValid(true);
136 container.add(accountPolicy);
137
138
139
140
141
142 AjaxDropDownChoicePanel<String> propagationPolicy = new AjaxDropDownChoicePanel<>(
143 "propagationPolicy",
144 new ResourceModel("propagationPolicy", "propagationPolicy").getObject(),
145 new PropertyModel<>(resourceTO, "propagationPolicy"),
146 false);
147 propagationPolicy.setChoiceRenderer(new PolicyRenderer(propagationPolicies.getObject()));
148 propagationPolicy.setChoices(new ArrayList<>(propagationPolicies.getObject().keySet()));
149 ((DropDownChoice<?>) propagationPolicy.getField()).setNullValid(true);
150 container.add(propagationPolicy);
151
152
153
154
155
156 AjaxDropDownChoicePanel<String> pullPolicy = new AjaxDropDownChoicePanel<>(
157 "pullPolicy",
158 new ResourceModel("pullPolicy", "pullPolicy").getObject(),
159 new PropertyModel<>(resourceTO, "pullPolicy"),
160 false);
161 pullPolicy.setChoiceRenderer(new PolicyRenderer(pullPolicies.getObject()));
162 pullPolicy.setChoices(new ArrayList<>(pullPolicies.getObject().keySet()));
163 ((DropDownChoice<?>) pullPolicy.getField()).setNullValid(true);
164 container.add(pullPolicy);
165
166
167
168
169
170 AjaxDropDownChoicePanel<String> pushPolicy = new AjaxDropDownChoicePanel<>(
171 "pushPolicy",
172 new ResourceModel("pushPolicy", "pushPolicy").getObject(),
173 new PropertyModel<>(resourceTO, "pushPolicy"),
174 false);
175 pushPolicy.setChoiceRenderer(new PolicyRenderer(pushPolicies.getObject()));
176 pushPolicy.setChoices(new ArrayList<>(pushPolicies.getObject().keySet()));
177 ((DropDownChoice<?>) pushPolicy.getField()).setNullValid(true);
178 container.add(pushPolicy);
179
180 }
181 }