Enhancements to reuse sliboot controller
[ccsdk/apps.git] / ms / sliboot / src / main / java / org / onap / ccsdk / apps / ms / sliboot / SlibootApp.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - CCSDK\r
4  * ================================================================================\r
5  * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 package org.onap.ccsdk.apps.ms.sliboot;\r
22 \r
23 import org.slf4j.Logger;\r
24 import org.slf4j.LoggerFactory;\r
25 import org.springframework.boot.SpringApplication;\r
26 import org.springframework.boot.autoconfigure.SpringBootApplication;\r
27 import org.springframework.boot.autoconfigure.domain.EntityScan;\r
28 import org.springframework.context.annotation.ComponentScan;\r
29 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;\r
30 import org.springframework.transaction.annotation.EnableTransactionManagement;\r
31 \r
32 import springfox.documentation.swagger2.annotations.EnableSwagger2;\r
33 import org.apache.shiro.realm.Realm;\r
34 import org.apache.shiro.realm.text.PropertiesRealm;\r
35 import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition;\r
36 import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;\r
37 import org.springframework.context.annotation.Bean;\r
38 import org.onap.aaf.cadi.shiro.AAFRealm;\r
39 \r
40 @SpringBootApplication(scanBasePackages={ "org.onap.ccsdk.apps.ms.sliboot.*", "org.onap.ccsdk.apps.services" })\r
41 @EnableJpaRepositories("org.onap.ccsdk.apps.ms.sliboot.*")\r
42 @EntityScan("org.onap.ccsdk.apps.ms.sliboot.*")\r
43 @EnableTransactionManagement\r
44 @EnableSwagger2\r
45 public class SlibootApp {\r
46 \r
47   private static final Logger log = LoggerFactory.getLogger(SlibootApp.class);\r
48 \r
49   public static void main(String[] args) throws Exception {\r
50     SpringApplication.run(SlibootApp.class, args);\r
51   }\r
52 \r
53   @Bean\r
54   public Realm realm() {\r
55 \r
56     // If cadi prop files is not defined use local properties realm\r
57     // src/main/resources/shiro-users.properties\r
58     if ("none".equals(System.getProperty("cadi_prop_files", "none"))) {\r
59       log.info("cadi_prop_files undefined, AAF Realm will not be set");\r
60       PropertiesRealm realm = new PropertiesRealm();\r
61       return realm;\r
62     } else {\r
63       AAFRealm realm = new AAFRealm();\r
64       return realm;\r
65     }\r
66 \r
67   }\r
68 \r
69   @Bean\r
70   public ShiroFilterChainDefinition shiroFilterChainDefinition() {\r
71     DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();\r
72 \r
73     // if cadi prop files is not set disable authentication\r
74     if ("none".equals(System.getProperty("cadi_prop_files", "none"))) {\r
75       chainDefinition.addPathDefinition("/**", "anon");\r
76     } else {\r
77       log.info("Loaded property cadi_prop_files, AAF REALM set");\r
78       chainDefinition.addPathDefinition("/**", "authcBasic, rest[org.onap.sdnc.odl:odl-api]");\r
79     }\r
80 \r
81     return chainDefinition;\r
82   }\r
83 \r
84 }\r