developers-api/src/main/java/eu/dnetlib/developers/controllers/APIController.java

65 lines
2.6 KiB
Java

package eu.dnetlib.developers.controllers;
import eu.dnetlib.developers.dto.RegisteredAT;
import eu.dnetlib.developers.dto.API;
import eu.dnetlib.developers.dto.ServiceForm;
import eu.dnetlib.developers.services.APIService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController()
@RequestMapping("/apis")
@CrossOrigin(origins = "*")
public class APIController {
@Autowired
private APIService service;
@Autowired
public APIController(APIService service) {
this.service = service;
}
@PreAuthorize("hasAnyAuthority('PORTAL_ADMINISTRATOR')")
@RequestMapping(value = "/all", method = RequestMethod.GET)
public ResponseEntity<List<API>> getAll() {
return ResponseEntity.ok(this.service.getAll());
}
@PreAuthorize("hasAnyAuthority('PORTAL_ADMINISTRATOR')")
@RequestMapping(value = "/migrate/accessToken", method = RequestMethod.POST)
public ResponseEntity<List<API>> migrateAccessToken(@RequestBody List<RegisteredAT> registeredATS) {
return ResponseEntity.ok(this.service.migrateAccessToken(registeredATS));
}
@PreAuthorize("hasAnyAuthority('REGISTERED_USER') && @AuthorizationService.hasPersonalInfo()")
@RequestMapping(value = "/my-services", method = RequestMethod.GET)
public ResponseEntity<List<API>> getMyServices() {
return ResponseEntity.ok(this.service.getMyServices());
}
@PreAuthorize("hasAnyAuthority('REGISTERED_USER') && @AuthorizationService.hasPersonalInfo()")
@RequestMapping(value = "/save/new", method = RequestMethod.POST)
public ResponseEntity<API> create(@RequestBody ServiceForm form) {
return ResponseEntity.ok(this.service.save(form));
}
@PreAuthorize("hasAnyAuthority('REGISTERED_USER') && @AuthorizationService.hasPersonalInfo() && @AuthorizationService.isMyService(#id)")
@RequestMapping(value = "/save/{id}", method = RequestMethod.POST)
public ResponseEntity<API> update(@PathVariable Long id, @RequestBody ServiceForm form) {
return ResponseEntity.ok(this.service.save(form, id));
}
@PreAuthorize("hasAnyAuthority('REGISTERED_USER') && @AuthorizationService.hasPersonalInfo() && @AuthorizationService.isMyService(#id)")
@RequestMapping(value = "/delete/{id}", method = RequestMethod.DELETE)
public ResponseEntity<?> delete(@PathVariable Long id) {
this.service.delete(id);
return ResponseEntity.noContent().build();
}
}