|
|
@@ -2,29 +2,28 @@ package org.linlinjava.litemall.admin.web;
|
|
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
import org.apache.commons.logging.LogFactory;
|
|
|
+import org.apache.shiro.SecurityUtils;
|
|
|
+import org.apache.shiro.authc.*;
|
|
|
+import org.apache.shiro.subject.Subject;
|
|
|
import org.linlinjava.litemall.admin.annotation.LoginAdmin;
|
|
|
-import org.linlinjava.litemall.admin.dao.AdminToken;
|
|
|
-import org.linlinjava.litemall.admin.service.AdminTokenManager;
|
|
|
import org.linlinjava.litemall.core.util.JacksonUtil;
|
|
|
import org.linlinjava.litemall.core.util.ResponseUtil;
|
|
|
-import org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder;
|
|
|
import org.linlinjava.litemall.db.domain.LitemallAdmin;
|
|
|
import org.linlinjava.litemall.db.service.LitemallAdminService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.util.Assert;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
-import org.springframework.web.bind.annotation.PostMapping;
|
|
|
-import org.springframework.web.bind.annotation.RequestBody;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import static org.linlinjava.litemall.admin.util.AdminResponseCode.ADMIN_INVALID_ACCOUNT;
|
|
|
|
|
|
@RestController
|
|
|
-@RequestMapping("/admin/login")
|
|
|
+@RequestMapping("/admin/auth")
|
|
|
@Validated
|
|
|
public class AdminAuthController {
|
|
|
private final Log logger = LogFactory.getLog(AdminAuthController.class);
|
|
|
@@ -44,23 +43,18 @@ public class AdminAuthController {
|
|
|
return ResponseUtil.badArgument();
|
|
|
}
|
|
|
|
|
|
- List<LitemallAdmin> adminList = adminService.findAdmin(username);
|
|
|
- Assert.state(adminList.size() < 2, "同一个用户名存在两个账户");
|
|
|
- if (adminList.size() == 0) {
|
|
|
- return ResponseUtil.badArgumentValue();
|
|
|
- }
|
|
|
- LitemallAdmin admin = adminList.get(0);
|
|
|
+ Subject currentUser = SecurityUtils.getSubject();
|
|
|
+ try {
|
|
|
+ currentUser.login(new UsernamePasswordToken(username, password));
|
|
|
+ } catch (UnknownAccountException uae) {
|
|
|
+ return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, "用户帐号或密码不正确");
|
|
|
+ } catch (LockedAccountException lae) {
|
|
|
+ return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, "用户帐号已锁定不可用");
|
|
|
|
|
|
- BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
|
|
|
- if (!encoder.matches(password, admin.getPassword())) {
|
|
|
- return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, "账号密码不对");
|
|
|
+ } catch (AuthenticationException ae) {
|
|
|
+ return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, ae.getMessage());
|
|
|
}
|
|
|
-
|
|
|
- Integer adminId = admin.getId();
|
|
|
- // token
|
|
|
- AdminToken adminToken = AdminTokenManager.generateToken(adminId);
|
|
|
-
|
|
|
- return ResponseUtil.ok(adminToken.getToken());
|
|
|
+ return ResponseUtil.ok(currentUser.getSession().getId());
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -72,6 +66,43 @@ public class AdminAuthController {
|
|
|
return ResponseUtil.unlogin();
|
|
|
}
|
|
|
|
|
|
+ Subject currentUser = SecurityUtils.getSubject();
|
|
|
+ currentUser.logout();
|
|
|
+ return ResponseUtil.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/info")
|
|
|
+ public Object info(@LoginAdmin Integer adminId) {
|
|
|
+ LitemallAdmin admin = adminService.findById(adminId);
|
|
|
+ if (admin == null) {
|
|
|
+ return ResponseUtil.badArgumentValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> data = new HashMap<>();
|
|
|
+ data.put("name", admin.getUsername());
|
|
|
+ data.put("avatar", admin.getAvatar());
|
|
|
+
|
|
|
+ // 目前roles不支持,这里简单设置admin
|
|
|
+ List<String> roles = new ArrayList<>();
|
|
|
+ roles.add("admin");
|
|
|
+ data.put("roles", roles);
|
|
|
+ data.put("introduction", "admin introduction");
|
|
|
+ return ResponseUtil.ok(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/401")
|
|
|
+ public Object page401() {
|
|
|
+ return ResponseUtil.unlogin();
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/index")
|
|
|
+ public Object pageIndex() {
|
|
|
return ResponseUtil.ok();
|
|
|
}
|
|
|
+
|
|
|
+ @GetMapping("/403")
|
|
|
+ public Object page403() {
|
|
|
+ return ResponseUtil.unauthz();
|
|
|
+ }
|
|
|
}
|