Browse Source

Update BookController: add Security config; add updateWithoutPrice

method; minor fixes
Signed-off-by: Pekka Helenius <fincer89@hotmail.com>
v0.0.3-alpha
Pekka Helenius 4 years ago
parent
commit
818dd57e8c
1 changed files with 17 additions and 3 deletions
  1. +17
    -3
      bookstore/src/main/java/com/fjordtek/bookstore/web/BookController.java

+ 17
- 3
bookstore/src/main/java/com/fjordtek/bookstore/web/BookController.java View File

@ -13,12 +13,12 @@ import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@ -78,6 +78,9 @@ public class BookController {
private static final String bookDeletePageView = "bookdelete"; private static final String bookDeletePageView = "bookdelete";
private static final String bookEditPageView = "bookedit"; private static final String bookEditPageView = "bookedit";
private static final String bookLoginPageView = "/login";
private static final String bookLogoutPageView = "/logout";
/* /*
* This method MUST exist with Autowired annotation. Handles autowiring of external classes. * This method MUST exist with Autowired annotation. Handles autowiring of external classes.
* If this method is not defined, they are not found by this controller class (are null). * If this method is not defined, they are not found by this controller class (are null).
@ -101,6 +104,9 @@ public class BookController {
put("addpage", bookAddPageView); put("addpage", bookAddPageView);
put("deletepage", bookDeletePageView); put("deletepage", bookDeletePageView);
put("editpage", bookEditPageView); put("editpage", bookEditPageView);
put("loginpage", bookLoginPageView);
put("logoutpage", bookLogoutPageView);
}}; }};
private HttpServerLogger httpServerLogger = new HttpServerLogger(); private HttpServerLogger httpServerLogger = new HttpServerLogger();
@ -137,6 +143,7 @@ public class BookController {
////////////////////////////// //////////////////////////////
// ADD BOOK // ADD BOOK
@PreAuthorize("hasAuthority('MARKETING')")
@RequestMapping( @RequestMapping(
value = bookAddPageView, value = bookAddPageView,
method = { RequestMethod.GET, RequestMethod.PUT } method = { RequestMethod.GET, RequestMethod.PUT }
@ -156,6 +163,7 @@ public class BookController {
return bookAddPageView; return bookAddPageView;
} }
@PreAuthorize("hasAuthority('MARKETING')")
@RequestMapping( @RequestMapping(
value = bookAddPageView, value = bookAddPageView,
method = RequestMethod.POST method = RequestMethod.POST
@ -208,6 +216,7 @@ public class BookController {
// DELETE BOOK // DELETE BOOK
@Transactional @Transactional
@PreAuthorize("hasAuthority('ADMIN')")
@RequestMapping( @RequestMapping(
value = bookDeletePageView + "/{hash_id}", value = bookDeletePageView + "/{hash_id}",
method = RequestMethod.GET method = RequestMethod.GET
@ -240,6 +249,7 @@ public class BookController {
////////////////////////////// //////////////////////////////
// UPDATE BOOK // UPDATE BOOK
@PreAuthorize("hasAuthority('MARKETING') or hasAuthority('HELPDESK')")
@RequestMapping( @RequestMapping(
value = bookEditPageView + "/{hash_id}", value = bookEditPageView + "/{hash_id}",
method = RequestMethod.GET method = RequestMethod.GET
@ -274,11 +284,11 @@ public class BookController {
* Internally, we never use URL id as a reference for user modifications, * Internally, we never use URL id as a reference for user modifications,
* but just as an URL end point. * but just as an URL end point.
*/ */
@PreAuthorize("hasAuthority('MARKETING') or hasAuthority('HELPDESK')")
@RequestMapping( @RequestMapping(
value = bookEditPageView + "/{hash_id}", value = bookEditPageView + "/{hash_id}",
method = RequestMethod.POST method = RequestMethod.POST
) )
@ExceptionHandler
public String webFormUpdateBook( public String webFormUpdateBook(
@Valid @ModelAttribute("book") Book book, @Valid @ModelAttribute("book") Book book,
BindingResult bindingResultBook, BindingResult bindingResultBook,
@ -343,7 +353,11 @@ public class BookController {
//authorRepository.save(book.getAuthor()); //authorRepository.save(book.getAuthor());
bookAuthorHelper.detectAndSaveUpdateAuthorForBook(book); bookAuthorHelper.detectAndSaveUpdateAuthorForBook(book);
bookRepository.save(book);
if (book.getPrice() == null) {
bookRepository.updateWithoutPrice(book);
} else {
bookRepository.save(book);
}
httpServerLogger.log(requestData, responseData); httpServerLogger.log(requestData, responseData);
return "redirect:/" + bookListPageView; return "redirect:/" + bookListPageView;


Loading…
Cancel
Save