View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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  }