package io.loli.box.controller;
import io.loli.box.dao.ImgFileRepository;
import io.loli.box.entity.Role;
import io.loli.box.entity.User;
import io.loli.box.service.impl.UserService;
import io.loli.box.social.SocialUserDetails;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author choco
*/
@Controller
public class UserController {
private Integer pageSize = 20;
@Autowired
private ImgFileRepository repository;
@Autowired
private UserService userService;
@RequestMapping("/user/images")
@PreAuthorize("@adminProperties.anonymous or hasRole('USER')")
public String imagesRedirect() {
return "redirect:/user/images?page=0&size=15";
}
@RequestMapping(value = "/user/images",params = "page")
@PreAuthorize("@adminProperties.anonymous or hasRole('USER')")
public String myImages(Model model, Authentication authentication, Pageable page) {
User user = null;
if (authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority).anyMatch(Role.ROLE_USER.toString()::equals)) {
user = userService.findByEmailOrName(((SocialUserDetails) authentication.getPrincipal()).getEmail());
}
Long id = user.getId();
model.addAttribute("images", repository.findByUserIdOrderByCreateDateDesc(id, page));
return "user/images";
}
}