/** * Balero CMS Project: Proyecto 100% Mexicano de código libre. * Página Oficial: http://www.balerocms.com * * @author Anibal Gomez <anibalgomez@icloud.com> * @copyright Copyright (C) 2015 Neblina Software. Derechos reservados. * @license Licencia BSD; vea LICENSE.txt */ package com.neblina.balero.web.authorized.admin; import com.neblina.balero.domain.User; import com.neblina.balero.service.SettingService; import com.neblina.balero.service.UserService; import com.neblina.balero.service.repository.BlockRepository; import com.neblina.balero.service.repository.BlogRepository; import com.neblina.balero.service.repository.CommentRepository; import com.neblina.balero.service.repository.PageRepository; import com.neblina.balero.util.MediaManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.security.access.annotation.Secured; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import java.io.IOException; import java.util.Locale; @Controller @RequestMapping("/admin") public class AdminController { private static final Logger log = LogManager.getLogger(AdminController.class.getName()); @Autowired private SettingService settingService; @Autowired private UserService userService; @Autowired private PageRepository pageRepository; @Autowired private BlockRepository blockRepository; @Autowired private BlogRepository blogRepository; @Autowired private CommentRepository commentRepository; @Autowired private Environment environment; @Secured("ROLE_ADMIN") //@PreAuthorize("true") @RequestMapping(value = {"", "/", "/dashboard" }) public String dashboardIndex(Model model) { //model.asMap().clear(); String username = userService.getMyUsername(); model.addAttribute("users", userService.findOneByUsername(username)); model.addAttribute("totalPages", pageRepository.findAll().size()); model.addAttribute("totalUsers", userService.findAll().size()); model.addAttribute("totalBlocks", blockRepository.findAll().size()); model.addAttribute("totalPosts", blogRepository.findAll().size()); model.addAttribute("totalComments", commentRepository.findAll().size()); model.addAttribute("profiles", environment.getActiveProfiles()[0]); return "authorized/dashboard"; } @Secured("ROLE_ADMIN") @RequestMapping("/settings") public String settings(Model model) throws IOException { MediaManager mediaManager = new MediaManager(); model.addAttribute("templates", mediaManager.retrieveTemplates()); return "authorized/settings"; } @Secured("ROLE_ADMIN") @RequestMapping(value = "/settings", method = RequestMethod.POST) public String saveSettings(Model model, Locale locale, @RequestParam(value = "title") String title, @RequestParam(value = "titleHeader") String titleHeader, // Properties @RequestParam(value = "administratorEmail") String administratorEmail, @RequestParam(value = "url") String url, @RequestParam(value = "mainLanguage") String mainLanguage, // Properties @RequestParam(value = "tags") String tags, @RequestParam(value = "footer") String footer, @RequestParam(value = "offlineMessage") String offlineMessage, @RequestParam(value = "template") String template) { model.addAttribute("success", 1); settingService.saveSettings( locale.getLanguage(), title, titleHeader, // Properties administratorEmail, url, mainLanguage, template, // Properties tags, footer, offlineMessage ); return "redirect:/admin/settings"; } @Secured("ROLE_ADMIN") @RequestMapping("/languages") public String languages() { return "authorized/languages"; } @Secured("ROLE_ADMIN") @RequestMapping("/profile") public String profileGet(Model model) { String username = userService.getMyUsername(); log.debug("Username: " + username); User user = userService.findOneByUsername(username); model.addAttribute("user", user); return "authorized/profile"; } @Secured("ROLE_ADMIN") @RequestMapping(value = "/profile", method = RequestMethod.POST) public String profilePost(Model model, @RequestParam("firstName") String firstName, @RequestParam("lastName") String lastName, @RequestParam("email") String email) { log.debug("POST /admin/profile"); model.addAttribute("success", 1); User user = userService.findOneByUsername("admin"); model.addAttribute("user", user); userService.saveAdminProfile(firstName, lastName, email); return "authorized/profile"; } @Secured("ROLE_ADMIN") @RequestMapping(value = "/password", method = RequestMethod.POST) public String passwordPost(Model model, @RequestParam("newPassword") String newPassword) { log.debug("POST /admin/password"); model.addAttribute("success", 1); User user = userService.findOneByUsername("admin"); model.addAttribute("user", user); userService.changeAdminPassword(newPassword); return "authorized/profile"; } }