package com.gkhy.safePlatform.account.controller; import com.alibaba.fastjson.JSONObject; import com.gkhy.safePlatform.account.entity.user.UserInfo; import com.gkhy.safePlatform.account.model.annotation.CommonLogEnable; import com.gkhy.safePlatform.account.model.dto.req.AccountPwdChangeReqDTO; import com.gkhy.safePlatform.account.service.AuthService; import com.gkhy.safePlatform.account.service.baseService.UserInfoService; import com.gkhy.safePlatform.account.model.dto.req.LoginReqDTO; import com.gkhy.safePlatform.account.model.dto.resp.MenuRespDTO; import com.gkhy.safePlatform.account.model.dto.resp.UserLoginRespDTO; import com.gkhy.safePlatform.commons.co.ContextCacheUser; import com.gkhy.safePlatform.commons.enums.Module; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.google.gson.JsonObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.security.Principal; import java.util.List; @RestController @RequestMapping("/auth") public class AuthController { @Autowired private AuthService authService; @RequestMapping(value = "/login") public ResultVO authLogin(@RequestBody LoginReqDTO loginParam) { UserLoginRespDTO data = authService.authLogin(loginParam); return new ResultVO<>(ResultCodes.OK, data); } @RequestMapping(value = "/user") public ResultVO getCurrentInfo(Authentication authentication) { ContextCacheUser currentUser = (ContextCacheUser) authentication.getPrincipal(); return new ResultVO<>(ResultCodes.OK, currentUser); } @RequestMapping(value = "/menu") public ResultVO> getCurrentMenu(Authentication authentication, Long projectId) { ContextCacheUser currentUser = (ContextCacheUser) authentication.getPrincipal(); List data = authService.getUserMenuTreeByUserIdAndProjectId(currentUser, projectId); return new ResultVO<>(ResultCodes.OK, data); } @RequestMapping(value = "/logout") public ResultVO logout(Authentication authentication) { ContextCacheUser currentUser = (ContextCacheUser) authentication.getPrincipal(); authService.authLogout(currentUser.getUid()); return new ResultVO<>(ResultCodes.OK, null); } /** * @Description: 提供给 admin 角色的密码修改 */ @RequestMapping(value = "/pwd-change") @PreAuthorize("hasAuthority('pwd_modify')") @CommonLogEnable(module = Module.ACCOUNT,content = "密码修改") public ResultVO pwdChange(Authentication authentication,@RequestBody AccountPwdChangeReqDTO reqDTO) { ContextCacheUser currentUser = (ContextCacheUser) authentication.getPrincipal(); authService.pwdChange(currentUser, reqDTO); return new ResultVO(ResultCodes.OK); } }