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.setName(clientApp.getName());
45 service.setDescription(clientApp.getDescription());
46 service.setLogo(clientApp.getLogo());
47 service.setTheme(clientApp.getTheme());
48 service.setInformationUrl(clientApp.getInformationUrl());
49 service.setPrivacyUrl(clientApp.getPrivacyUrl());
50 Optional.ofNullable(clientApp.getUsernameAttributeProviderConf()).
51 ifPresent(conf -> conf.map(new DefaultUsernameAttributeProviderConfMapper(service)));
52
53 if (!clientApp.getProperties().isEmpty()) {
54 Map<String, RegisteredServiceProperty> properties = clientApp.getProperties().stream().
55 collect(Collectors.toMap(
56 Attr::getSchema,
57 attr -> new DefaultRegisteredServiceProperty(attr.getValues()),
58 (existing, replacement) -> existing));
59 service.setProperties(properties);
60 }
61
62 service.setLogoutType(RegisteredServiceLogoutType.valueOf(clientApp.getLogoutType().name()));
63 }
64
65 protected void setPolicies(
66 final BaseWebBasedRegisteredService service,
67 final RegisteredServiceAuthenticationPolicy authPolicy,
68 final RegisteredServiceMultifactorPolicy mfaPolicy,
69 final RegisteredServiceAccessStrategy accessStrategy,
70 final RegisteredServiceAttributeReleasePolicy attributeReleasePolicy,
71 final RegisteredServiceTicketGrantingTicketExpirationPolicy tgtExpirationPolicy,
72 final RegisteredServiceServiceTicketExpirationPolicy stExpirationPolicy,
73 final RegisteredServiceProxyGrantingTicketExpirationPolicy tgtProxyExpirationPolicy,
74 final RegisteredServiceProxyTicketExpirationPolicy stProxyExpirationPolicy) {
75
76 Optional.ofNullable(authPolicy).ifPresent(service::setAuthenticationPolicy);
77
78 Optional.ofNullable(mfaPolicy).ifPresent(service::setMultifactorAuthenticationPolicy);
79
80 Optional.ofNullable(accessStrategy).ifPresent(service::setAccessStrategy);
81
82 Optional.ofNullable(attributeReleasePolicy).ifPresent(service::setAttributeReleasePolicy);
83
84 Optional.ofNullable(tgtExpirationPolicy).ifPresent(service::setTicketGrantingTicketExpirationPolicy);
85
86 if (service instanceof CasRegisteredService) {
87 CasRegisteredService casRegisteredService = (CasRegisteredService) service;
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 }