uoa-admin-tools/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java

45 lines
2.2 KiB
Java
Raw Normal View History

package eu.dnetlib.uoaadmintools;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.dnetlib.uoaadmintools.configuration.GlobalVars;
import eu.dnetlib.uoaadmintools.configuration.properties.APIProperties;
import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig;
import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig;
import eu.dnetlib.uoaadmintools.configuration.properties.MongoConfig;
2021-12-07 12:21:43 +01:00
import eu.dnetlib.uoaadmintoolslibrary.UoaAdminToolsLibraryConfiguration;
[Trunk | Admin Tools]: 1. pom.xml: Added dependency for spring security. 2. UoaAdminToolsApplication.java: Import AuthorizationConfiguration.class | Remove SecurityConfig.class from @EnableConfigurationProperties. 3. UoaAdminToolsConfiguration.java: Comment "addInterceptors()" method calling AuthorizationHandler with SecurityConfig. 4. SecurityConfig.java & AuthorizationHandler.java & AuthorizationUtils.java & CommunityInfo.java & UserInfo.java: Commented all contents of these files (files will be deleted in coming commit). 5. PortalSubscribersController.java: Comment imports from commeted files. 6. Notifications.java: Added field "aaiId" get getters and setters. 7. NotificationsController.java: a. Method "getNotifications()" is replaced by "getNotificationsForUser()" (/community/{pid}/notifications) - returns notification settings only for user who made the request (uoa-authorization-li$ b. Path changed for method "getNotifications()": /community/{pid}/notifications/all c. Remove "@RequestBody String email" parameter from method "deleteNotification()" - get email from user who made the request (uoa-authorization-library). d. In method "saveNotification()" get aaiId and email from user who made the request (uoa-authorization-library). e. Added checks and throw Exceptions in all methods. f. Added @PreAuthorize Portal Admins: "getNotifications()" (/community/{pid}/notifications/all) Portal Admins - Curators - Managers: "getNotificationsForUser()" (/community/{pid}/notifications), "deleteNotification()" (/community/{pid}/notifications), "saveNotification()" (/communit$ 8. ExploreController.java: a. Added checks and throw Exceptions in all methods. b. Added @PreAuthorize Portal Admins: "updateExplore()" (/explore/update), "insertExplore()" (/explore/save), "deleteExplore()" (/explore/delete). 9. ConnectController.java: a. Added checks and throw Exceptions in all methods. b. Added @PreAuthorize Portal Admins: "updateConnect()" (/connect/update), "insertConnect()" (/connect/save), "deleteConnect()" (/connect/delete). c. Commented methods "getLayoutForConnect()" and "updateLayoutForConnect()" (/connect/{pid}/layout). 10. CommunityController.java: a. Added checks and throw Exceptions in all methods. b. Added @PreAuthorize Portal Admins: "updateCommunity()" (/community/update), "insertCommunity()" (/community/save), "deleteCommunity()" (/community/delete). Portal Admin - Curators - Managers: "updateLayoutForCommunity()" (/community/{pid}/layout). 11. CuratorController.java: a. In "insertCurator() (/curator) set _id field with aaiId from user who made the request (uoa-authorization-library). b. Added @PreAuthorize Authenticated users: "getCuratorById()" (/curator/{id}), "insertCurator()" (/curator). Portal Admins: "deleteCurators()" (/curator).
2021-02-25 12:57:22 +01:00
import eu.dnetlib.uoaauthorizationlibrary.configuration.AuthorizationConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;
2021-12-07 12:21:43 +01:00
@SpringBootApplication(scanBasePackages = {"eu.dnetlib.uoaadmintools"})
@PropertySources({
@PropertySource("classpath:authorization.properties"),
@PropertySource("classpath:admintoolslibrary.properties"),
@PropertySource("classpath:admintools.properties"),
[Trunk | Admin Tools Service]: 1. admintools.properties & UoaAdminToolsApplication.java: Uncomment admintools.properties and ignore if @PropertySource for dnet-override.properties not found, to let tests runs. 2. Subscriber.java: Add default constructor and constructor with email parameter. 3. CommunitySubscribersController.java: a. Autowire SecurityConfig to let methods get UserInfo via token. b. Add GET method "getNumberOfSubscribersPerCommunity()" (/community/{pid}/subscribers/count). c. Add GET methos "getIsSubscribedToCommunity()" (/community/{pid}/is-subscriber): Return true/ false and gets user email via token in @RequestHeader("X-XSRF-TOKEN"). d. Method "addSubscriberInCommunity()" renamed to "addSubscriberInCommunityByEmail()" | Method "deleteSubscriberFromCommunity()" renamed to "deleteSubscriberFromCommunityByEmail()". e. Add POST methods "addSubscriberInCommunity()" (/community/{pid}/subscriber) and "deleteSubscriberFromCommunity()" (/community/{pid}/subscriber/delete): Return true/ false and get user email via token in @RequestHeader("X-XSRF-TOKEN"). f. Method getCommunitiesPerSubcriber(@RequestParam(value="email", required = true) String email) --> getCommunitiesPerSubcriber(@RequestHeader("X-XSRF-TOKEN") String token): Get user email via token in @RequestHeader("X-XSRF-TOKEN"). 4. update_db.js: a. Add method "createNewPagesForConnect()": adds page "/publications" for connect (enabled). b. Add method "createNewPagesForCommunities()": adds pages "/content" (enabled), "/projects" (disabled), "/national-bulletins" (disabled), "/subjects"(disabled) for communities. c. Add method "removeContentPolicyPageAndAddHelpTextInCommunitiesSourcesPage()": remove old "/content" connect page and move its contents to new "/content" for every community (NOT connect & openaire).
2020-04-10 14:34:43 +02:00
@PropertySource(value = "classpath:dnet-override.properties", ignoreResourceNotFound = true)
})
@EnableConfigurationProperties({MongoConfig.class, ManagersApiConfig.class, BrowserCacheConfig.class, GlobalVars.class, APIProperties.class})
2021-12-07 12:21:43 +01:00
@Import({AuthorizationConfiguration.class, UoaAdminToolsLibraryConfiguration.class})
public class UoaAdminToolsApplication {
public static void main(String[] args) {
SpringApplication.run(UoaAdminToolsApplication.class, args);
}
@Bean
RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(new ObjectMapper());
restTemplate.getMessageConverters().add(converter);
return restTemplate;
}
}