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

222 lines
9.8 KiB
Java
Raw Normal View History

package eu.dnetlib.uoaadmintools.controllers;
[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
import eu.dnetlib.uoaadmintools.configuration.properties.SecurityConfig;
import eu.dnetlib.uoaadmintools.dao.CommunityDAO;
import eu.dnetlib.uoaadmintools.dao.CommunitySubscribersDAO;
import eu.dnetlib.uoaadmintools.dao.SubscriberDAO;
import eu.dnetlib.uoaadmintools.entities.CommunitySubscribers;
import eu.dnetlib.uoaadmintools.entities.Subscriber;
import eu.dnetlib.uoaadmintools.handlers.ContentNotFoundException;
[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
import eu.dnetlib.uoaadmintools.handlers.utils.AuthorizationUtils;
import eu.dnetlib.uoaadmintools.handlers.utils.UserInfo;
import eu.dnetlib.uoaadmintools.responses.SingleValueWrapperResponse;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
[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
import java.util.Iterator;
import java.util.List;
/**
* Created by argirok on 2/3/2018.
*/
@RestController
@CrossOrigin(origins = "*")
public class CommunitySubscribersController {
@Autowired
CommunitySubscribersDAO communitySubscriberDAO;
@Autowired
SubscriberDAO subscriberDAO;
@Autowired
CommunityDAO communityDAO;
[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
@Autowired
private SecurityConfig securityConfig;
private final Logger log = Logger.getLogger(this.getClass());
@RequestMapping(value = "/community/subscribers", method = RequestMethod.GET)
public List<CommunitySubscribers> getAllCommunitySubscribers(){
return communitySubscriberDAO.findAll();
}
@RequestMapping(value = "/community/{pid}/subscribers", method = RequestMethod.GET)
public CommunitySubscribers getSubscribersPerCommunity(@PathVariable(value="pid", required = true) String pid) throws ContentNotFoundException {
CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
if(communitySubscribers != null){
return communitySubscribers;
}else{
throw new ContentNotFoundException("Community Subscribers not found");
}
}
[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
@RequestMapping(value = "/community/{pid}/subscribers/count", method = RequestMethod.GET)
public SingleValueWrapperResponse<Integer> getNumberOfSubscribersPerCommunity(@PathVariable(value="pid", required = true) String pid) throws ContentNotFoundException {
SingleValueWrapperResponse<Integer> singleValueWrapperResponse = new SingleValueWrapperResponse(0);
[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
CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
if(communitySubscribers != null){
if(communitySubscribers.getSubscribers() != null) {
singleValueWrapperResponse.setValue(communitySubscribers.getSubscribers().size());
[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
}
}else{
throw new ContentNotFoundException("Community Subscribers not found");
}
return singleValueWrapperResponse;
[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
}
@RequestMapping(value = "/community/{pid}/is-subscriber", method = RequestMethod.GET)
public Boolean getIsSubscribedToCommunity(@PathVariable(value="pid", required = true) String pid,
//@RequestBody String email,
@RequestHeader("X-XSRF-TOKEN") String token) throws ContentNotFoundException {
AuthorizationUtils helper = new AuthorizationUtils();
helper.setUserInfoUrl(securityConfig.getUserInfoUrl());
UserInfo userInfo = helper.getUserInfo(token);
if(userInfo != null) {
String email = userInfo.getEmail();
CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
if (communitySubscribers != null) {
if (communitySubscribers.getSubscribers() != null) {
for (Subscriber subscriber : communitySubscribers.getSubscribers()) {
if (subscriber.getEmail().equals(email)) {
return true;
}
}
}
} else {
throw new ContentNotFoundException("Community Subscribers not found");
}
}
return false;
}
@RequestMapping(value = "/community/{pid}/subscriber", method = RequestMethod.POST)
public Boolean addSubscriberInCommunity(@PathVariable(value="pid", required = true) String pid,
@RequestHeader("X-XSRF-TOKEN") String token) throws ContentNotFoundException {
AuthorizationUtils helper = new AuthorizationUtils();
helper.setUserInfoUrl(securityConfig.getUserInfoUrl());
UserInfo userInfo = helper.getUserInfo(token);
if(userInfo != null) {
String email = userInfo.getEmail();
Subscriber subscriber = new Subscriber(email);
CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
if (communitySubscribers == null) {
throw new ContentNotFoundException("Community Subscribers not found");
}
Subscriber savedSubscriber = subscriberDAO.findByEmail(email);
if (savedSubscriber == null) {
savedSubscriber = subscriberDAO.save(subscriber);
}
for (Subscriber sub : communitySubscribers.getSubscribers()) {
if (sub.getEmail().equals(subscriber.getEmail())) {
//already subscribed
return false;
}
}
//not subscribed yet
communitySubscribers.getSubscribers().add(savedSubscriber);
communitySubscriberDAO.save(communitySubscribers);
return true;
}
return false;
}
@RequestMapping(value = "/community/{pid}/subscriber/delete", method = RequestMethod.POST)
public Boolean deleteSubscriberFromCommunity(@PathVariable(value="pid", required = true) String pid,
@RequestHeader("X-XSRF-TOKEN") String token) throws ContentNotFoundException {
AuthorizationUtils helper = new AuthorizationUtils();
helper.setUserInfoUrl(securityConfig.getUserInfoUrl());
UserInfo userInfo = helper.getUserInfo(token);
if(userInfo != null) {
String email = userInfo.getEmail();
CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
if (communitySubscribers == null) {
throw new ContentNotFoundException("Community Subscribers not found");
}
Iterator<Subscriber> subscriberIterator = communitySubscribers.getSubscribers().iterator();
while(subscriberIterator.hasNext()) {
Subscriber subscriber = subscriberIterator.next();
if(subscriber.getEmail().equals(email)) {
subscriberIterator.remove();
communitySubscriberDAO.save(communitySubscribers);
return true;
}
}
}
return false;
}
@RequestMapping(value = "/community/{pid}/subscribers", method = RequestMethod.POST)
[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
public CommunitySubscribers addSubscriberInCommunityByEmail(@PathVariable(value="pid", required = true) String pid, @RequestBody Subscriber subscriber) throws ContentNotFoundException {
CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
if(communitySubscribers == null){
throw new ContentNotFoundException("Community Subscribers not found");
}
Subscriber savedSubscriber = subscriberDAO.findByEmail(subscriber.getEmail());
if(savedSubscriber==null){
savedSubscriber = subscriberDAO.save(subscriber);
}
for(Subscriber sub:communitySubscribers.getSubscribers()){
if(sub.getEmail().equals(subscriber.getEmail())){
//already subscribed
return communitySubscribers;
}
}
//not subscribed yet
communitySubscribers.getSubscribers().add(savedSubscriber);
return communitySubscriberDAO.save(communitySubscribers);
}
@RequestMapping(value = "/community/{pid}/subscribers/delete", method = RequestMethod.POST)
[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
public CommunitySubscribers deleteSubscriberFromCommunityByEmail(@PathVariable(value="pid", required = true) String pid, @RequestBody List<String> emails) throws ContentNotFoundException {
CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
if(communitySubscribers == null){
throw new ContentNotFoundException("Community Subscribers not found");
}
List<Subscriber> list = new ArrayList<>();
for(Subscriber s:communitySubscribers.getSubscribers()){
if(emails.indexOf(s.getEmail())==-1){
list.add(s);
}
}
communitySubscribers.setSubscribers(list);
return communitySubscriberDAO.save(communitySubscribers);
}
@RequestMapping(value = "/subscriber/communities", method = RequestMethod.GET)
[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
public List<String> getCommunitiesPerSubcriber(//@RequestParam(value="email", required = true) String email,
@RequestHeader("X-XSRF-TOKEN") String token) {
AuthorizationUtils helper = new AuthorizationUtils();
helper.setUserInfoUrl(securityConfig.getUserInfoUrl());
UserInfo userInfo = helper.getUserInfo(token);
List<String> list = new ArrayList<>();
[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
if (userInfo != null) {
String email = userInfo.getEmail();
List<CommunitySubscribers> communitySubscribers = communitySubscriberDAO.findAll();
for (CommunitySubscribers s : communitySubscribers) {
for (Subscriber sub : s.getSubscribers()) {
if (sub.getEmail().equals(email)) {
list.add(s.getPid());
break;
}
}
}
}
return list;
}
}