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.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  }