| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- package com.uas.kanban.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.uas.kanban.annotation.NotEmpty;
- import com.uas.kanban.base.BaseController;
- import com.uas.kanban.exception.OperationException;
- import com.uas.kanban.model.RememberKey;
- import com.uas.kanban.model.User;
- import com.uas.kanban.service.RememberKeyService;
- import com.uas.kanban.service.UserService;
- import com.uas.kanban.support.SessionHelper;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * 用户
- *
- * @author sunyj
- * @since 2017年9月1日 下午4:42:10
- */
- @Controller
- @RequestMapping("/user")
- public class UserController extends BaseController<User> {
- @Autowired
- private UserService userService;
- @Autowired
- private RememberKeyService rememberKeyService;
- @Autowired
- private SessionHelper sessionHelper;
- /**
- * 登陆
- *
- * @param name 名称
- * @param password 密码
- * @param request request
- * @param response response
- * @return 登陆信息
- * <table border=1 cellpadding=5 cellspacing=0 summary="Fields and types">
- * <tr>
- * <th>Key</th>
- * <th>Value</th>
- * </tr>
- * <tr>
- * <td>code</td>
- * <td>用户 code</td>
- * </tr>
- * <tr>
- * <td>name</td>
- * <td>用户名称</td>
- * </tr>
- * <tr>
- * <td>role</td>
- * <td>用户角色</td>
- * </tr>
- * <tr>
- * <td>key</td>
- * <td>生成的 key</td>
- * </tr>
- * </table>
- */
- @RequestMapping("/login")
- @ResponseBody
- public Map<String, Object> login(@NotEmpty("name") String name, @NotEmpty("password") String password,
- HttpServletRequest request, HttpServletResponse response) {
- User user = userService.login(name, password);
- if (user != null) {
- sessionHelper.saveSession(request, user);
- String userCode = user.codeNotEmpty();
- RememberKey rememberKey = rememberKeyService.generate(userCode);
- // 生成的 key 保存到 cookie 里
- Integer maxInactiveInterval = rememberKey.getMaxInactiveInterval();
- addCookie("code", userCode, maxInactiveInterval, response);
- addCookie("key", rememberKey.getKey(), maxInactiveInterval, response);
- Map<String, Object> map = new HashMap<>();
- map.put("name", name);
- map.put("role", user.getRole());
- return map;
- }
- return null;
- }
- /**
- * 添加 cookie
- *
- * @param name cookie 名
- * @param value cookie 值
- * @param maxAge 有效时间(秒)
- * @param response response
- */
- private void addCookie(String name, String value, Integer maxAge, HttpServletResponse response) {
- Cookie cookie = new Cookie(name, value);
- cookie.setMaxAge(maxAge);
- cookie.setPath("/");
- response.addCookie(cookie);
- }
- /**
- * 退出登陆
- *
- * @param request request
- * @return 是否成功登陆
- * @throws OperationException 并非登陆状态
- */
- @RequestMapping("/logout")
- @ResponseBody
- public boolean logout(HttpServletRequest request) throws OperationException {
- User user = sessionHelper.readSession(request);
- if (user != null) {
- sessionHelper.clearSession(request);
- rememberKeyService.clearOldKey(user.codeNotEmpty());
- return true;
- }
- throw new OperationException("并非登陆状态");
- }
- /**
- * 重置密码
- *
- * @param password 旧密码
- * @param newPassword 新密码
- * @param request request
- * @return 是否重置成功
- */
- @RequestMapping("/resetPwd")
- @ResponseBody
- public boolean resetPwd(@NotEmpty("password") String password, @NotEmpty("newPassword") String newPassword,
- HttpServletRequest request) {
- return userService.resetPassword(password, newPassword);
- }
- /**
- * 初始化管理员
- *
- * @param name 名称
- * @param password 密码
- * @param request request
- * @return 账户信息
- */
- @RequestMapping("/initAdmin")
- @ResponseBody
- public User initAdmin(@NotEmpty("name") String name, @NotEmpty("password") String password, HttpServletRequest request) throws OperationException {
- User user = new User();
- user.setName(name);
- user.setPassword(password);
- user.setRole(User.Role.Admin);
- return save(JSONObject.toJSONString(user), request);
- }
- /**
- * 为指定用户分配面板
- *
- * @param userCode 用户 code
- * @param panelCodes 面板 code
- * @param request request
- * @return 分配成功
- */
- @RequestMapping("/assignPanel")
- @ResponseBody
- public boolean assignPanel(@NotEmpty("userCode") String userCode, String[] panelCodes, HttpServletRequest request) {
- userService.assignPanel(userCode, panelCodes == null ? null : Arrays.asList(panelCodes));
- return true;
- }
- }
|