package cc.mrbird.febs.system.controller;
|
|
import cc.mrbird.febs.common.authentication.ShiroHelper;
|
import cc.mrbird.febs.common.controller.BaseController;
|
import cc.mrbird.febs.common.entity.FebsConstant;
|
import cc.mrbird.febs.common.utils.DateUtil;
|
import cc.mrbird.febs.common.utils.FebsUtil;
|
import cc.mrbird.febs.system.entity.User;
|
import cc.mrbird.febs.system.service.IUserDataPermissionService;
|
import cc.mrbird.febs.system.service.IUserService;
|
import lombok.RequiredArgsConstructor;
|
import org.apache.shiro.authz.AuthorizationInfo;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.session.ExpiredSessionException;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
* @author MrBird
|
*/
|
@Controller("systemView")
|
@RequiredArgsConstructor
|
public class ViewController extends BaseController {
|
|
private final IUserService userService;
|
private final ShiroHelper shiroHelper;
|
private final IUserDataPermissionService userDataPermissionService;
|
|
@GetMapping("login")
|
@ResponseBody
|
public Object login(HttpServletRequest request) {
|
if (FebsUtil.isAjaxRequest(request)) {
|
throw new ExpiredSessionException();
|
} else {
|
ModelAndView mav = new ModelAndView();
|
mav.setViewName(FebsUtil.view("login"));
|
return mav;
|
}
|
}
|
|
@GetMapping("unauthorized")
|
public String unauthorized() {
|
return FebsUtil.view("error/403");
|
}
|
|
|
@GetMapping("/")
|
public String redirectIndex() {
|
return "redirect:/index";
|
}
|
|
@GetMapping("index")
|
public String index(Model model) {
|
AuthorizationInfo authorizationInfo = shiroHelper.getCurrentUserAuthorizationInfo();
|
User user = super.getCurrentUser();
|
User currentUserDetail = userService.findByName(user.getUsername());
|
currentUserDetail.setPassword("It's a secret");
|
model.addAttribute("user", currentUserDetail);
|
model.addAttribute("permissions", authorizationInfo.getStringPermissions());
|
model.addAttribute("roles", authorizationInfo.getRoles());
|
return "index";
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "layout")
|
public String layout() {
|
return FebsUtil.view("layout");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "password/update")
|
public String passwordUpdate() {
|
return FebsUtil.view("system/user/passwordUpdate");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "user/profile")
|
public String userProfile() {
|
return FebsUtil.view("system/user/userProfile");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "user/avatar")
|
public String userAvatar() {
|
return FebsUtil.view("system/user/avatar");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "user/profile/update")
|
public String profileUpdate() {
|
return FebsUtil.view("system/user/profileUpdate");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "system/user")
|
@RequiresPermissions("user:view")
|
public String systemUser() {
|
return FebsUtil.view("system/user/user");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "system/user/add")
|
@RequiresPermissions("user:add")
|
public String systemUserAdd() {
|
return FebsUtil.view("system/user/userAdd");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "system/user/detail/{username}")
|
@RequiresPermissions("user:view")
|
public String systemUserDetail(@PathVariable String username, Model model) {
|
resolveUserModel(username, model, true);
|
return FebsUtil.view("system/user/userDetail");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "system/user/update/{username}")
|
@RequiresPermissions("user:update")
|
public String systemUserUpdate(@PathVariable String username, Model model) {
|
resolveUserModel(username, model, false);
|
return FebsUtil.view("system/user/userUpdate");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "system/role")
|
@RequiresPermissions("role:view")
|
public String systemRole() {
|
return FebsUtil.view("system/role/role");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "system/menu")
|
@RequiresPermissions("menu:view")
|
public String systemMenu() {
|
return FebsUtil.view("system/menu/menu");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "system/dept")
|
@RequiresPermissions("dept:view")
|
public String systemDept() {
|
return FebsUtil.view("system/dept/dept");
|
}
|
|
@RequestMapping(FebsConstant.VIEW_PREFIX + "index")
|
public String pageIndex() {
|
return FebsUtil.view("index");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "404")
|
public String error404() {
|
return FebsUtil.view("error/404");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "403")
|
public String error403() {
|
return FebsUtil.view("error/403");
|
}
|
|
@GetMapping(FebsConstant.VIEW_PREFIX + "500")
|
public String error500() {
|
return FebsUtil.view("error/500");
|
}
|
|
private void resolveUserModel(String username, Model model, Boolean transform) {
|
User user = userService.findByName(username);
|
String deptIds = userDataPermissionService.findByUserId(String.valueOf(user.getUserId()));
|
user.setDeptIds(deptIds);
|
model.addAttribute("user", user);
|
if (transform) {
|
String sex = user.getSex();
|
if (User.SEX_MALE.equals(sex)) {
|
user.setSex("男");
|
} else if (User.SEX_FEMALE.equals(sex)) {
|
user.setSex("女");
|
} else {
|
user.setSex("保密");
|
}
|
}
|
if (user.getLastLoginTime() != null) {
|
model.addAttribute("lastLoginTime", DateUtil.getDateFormat(user.getLastLoginTime(), DateUtil.FULL_TIME_SPLIT_PATTERN));
|
}
|
}
|
}
|