1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.wa.starter.mapping;
20
21 import java.util.Map;
22 import java.util.Optional;
23 import java.util.stream.Collectors;
24 import org.apache.syncope.common.lib.Attr;
25 import org.apache.syncope.common.lib.to.ClientAppTO;
26 import org.apereo.cas.services.BaseWebBasedRegisteredService;
27 import org.apereo.cas.services.CasRegisteredService;
28 import org.apereo.cas.services.DefaultRegisteredServiceProperty;
29 import org.apereo.cas.services.RegisteredServiceAccessStrategy;
30 import org.apereo.cas.services.RegisteredServiceAttributeReleasePolicy;
31 import org.apereo.cas.services.RegisteredServiceAuthenticationPolicy;
32 import org.apereo.cas.services.RegisteredServiceLogoutType;
33 import org.apereo.cas.services.RegisteredServiceMultifactorPolicy;
34 import org.apereo.cas.services.RegisteredServiceProperty;
35 import org.apereo.cas.services.RegisteredServiceProxyGrantingTicketExpirationPolicy;
36 import org.apereo.cas.services.RegisteredServiceProxyTicketExpirationPolicy;
37 import org.apereo.cas.services.RegisteredServiceServiceTicketExpirationPolicy;
38 import org.apereo.cas.services.RegisteredServiceTicketGrantingTicketExpirationPolicy;
39
40 abstract class AbstractClientAppMapper implements ClientAppMapper {
41
42 protected void setCommon(final BaseWebBasedRegisteredService service, final ClientAppTO clientApp) {
43 service.setId(clientApp.getClientAppId());
44 service.setEvaluationOrder(clientApp.getEvaluationOrder());
45 service.setName(clientApp.getName());
46 service.setDescription(clientApp.getDescription());
47 service.setLogo(clientApp.getLogo());
48 service.setTheme(clientApp.getTheme());
49 service.setInformationUrl(clientApp.getInformationUrl());
50 service.setPrivacyUrl(clientApp.getPrivacyUrl());
51 Optional.ofNullable(clientApp.getUsernameAttributeProviderConf()).
52 ifPresent(conf -> conf.map(new DefaultUsernameAttributeProviderConfMapper(service)));
53
54 if (!clientApp.getProperties().isEmpty()) {
55 Map<String, RegisteredServiceProperty> properties = clientApp.getProperties().stream().
56 collect(Collectors.toMap(
57 Attr::getSchema,
58 attr -> new DefaultRegisteredServiceProperty(attr.getValues()),
59 (existing, replacement) -> existing));
60 service.setProperties(properties);
61 }
62
63 service.setLogoutType(RegisteredServiceLogoutType.valueOf(clientApp.getLogoutType().name()));
64 }
65
66 protected void setPolicies(
67 final BaseWebBasedRegisteredService service,
68 final RegisteredServiceAuthenticationPolicy authPolicy,
69 final RegisteredServiceMultifactorPolicy mfaPolicy,
70 final RegisteredServiceAccessStrategy accessStrategy,
71 final RegisteredServiceAttributeReleasePolicy attributeReleasePolicy,
72 final RegisteredServiceTicketGrantingTicketExpirationPolicy tgtExpirationPolicy,
73 final RegisteredServiceServiceTicketExpirationPolicy stExpirationPolicy,
74 final RegisteredServiceProxyGrantingTicketExpirationPolicy tgtProxyExpirationPolicy,
75 final RegisteredServiceProxyTicketExpirationPolicy stProxyExpirationPolicy) {
76
77 Optional.ofNullable(authPolicy).ifPresent(service::setAuthenticationPolicy);
78
79 Optional.ofNullable(mfaPolicy).ifPresent(service::setMultifactorAuthenticationPolicy);
80
81 Optional.ofNullable(accessStrategy).ifPresent(service::setAccessStrategy);
82
83 Optional.ofNullable(attributeReleasePolicy).ifPresent(service::setAttributeReleasePolicy);
84
85 Optional.ofNullable(tgtExpirationPolicy).ifPresent(service::setTicketGrantingTicketExpirationPolicy);
86
87 if (service instanceof final CasRegisteredService casRegisteredService) {
88
89 Optional.ofNullable(stExpirationPolicy).
90 ifPresent(casRegisteredService::setServiceTicketExpirationPolicy);
91
92 Optional.ofNullable(tgtProxyExpirationPolicy).
93 ifPresent(casRegisteredService::setProxyGrantingTicketExpirationPolicy);
94
95 Optional.ofNullable(stProxyExpirationPolicy).
96 ifPresent(casRegisteredService::setProxyTicketExpirationPolicy);
97 }
98 }
99 }