package com.yuanchu.limslaboratory.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.clients.UserLoginUtils;
import com.yuanchu.limslaboratory.pojo.User;
import com.yuanchu.limslaboratory.service.RoleManagerService;
import com.yuanchu.limslaboratory.service.UserService;
import com.yuanchu.limslaboratory.shiro.realm.ShiroRealm;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.utils.RedisUtil;
import com.yuanchu.limslaboratory.utils.SpringUtil;
import com.yuanchu.limslaboratory.pojo.vo.NewPersonnelVo;
import com.yuanchu.limslaboratory.vo.Result;
import com.yuanchu.limslaboratory.pojo.vo.UpdatePersonnelVo;
import io.swagger.annotations.*;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
*
* 前端控制器
*
*
* @author 江苏鵷雏网络科技有限公司
* @since 2023-07-07
*/
@RestController
@RequestMapping("/user")
@Api(tags = "用户模块")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RoleManagerService roleManagerService;
@ApiOperation("用户登录")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "account", value = "账号", dataTypeClass = String.class, required = true),
@ApiImplicitParam(name = "password", value = "密码", dataTypeClass = String.class, required = true)
})
@PostMapping("/login")
public Result> userLogin(String account, String password){
boolean loginSuccess = false;
Subject subject = SecurityUtils.getSubject();
if (!subject.isAuthenticated()) {
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(account, password);
try {
subject.login(usernamePasswordToken);
loginSuccess = true;
} catch (UnknownAccountException e) {
return Result.fail(202, "没有找到该账号,请检查输入!");
} catch (IncorrectCredentialsException e) {
return Result.fail(202, "密码不匹配,请检查输入!");
}
}
if (loginSuccess) {
// 获取shiroRealm中的数据
ShiroRealm bean = SpringUtil.getBean(ShiroRealm.class);
User user = bean.user;
user.setPassword(null);
UserLoginUtils bean1 = SpringUtil.getBean(UserLoginUtils.class);
return bean1.LoginExamine(user);
}else {
return Result.fail("登录失败");
}
}
@ApiOperation("新增用户获取角色权限信息")
@GetMapping("/list")
public Result> getUserListRole(){
List