AuthController.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. 
  2. using Microsoft.Extensions.Caching.Distributed;
  3. using OASystem.Infrastructure.Repositories.Login;
  4. using System.IdentityModel.Tokens.Jwt;
  5. using System.Security.Claims;
  6. using StackExchange.Redis;
  7. using OASystem.Domain.Dtos.UserDto;
  8. using OASystem.RedisRepository;
  9. namespace OASystem.API.Controllers
  10. {
  11. /// <summary>
  12. /// 鉴权相关
  13. /// </summary>
  14. [Route("api/")]
  15. public class AuthController : ControllerBase
  16. {
  17. private readonly IMapper _mapper;
  18. private readonly IConfiguration _config;
  19. private readonly LoginRepository _loginRep;
  20. private readonly UsersRepository _usersRepository;
  21. //private IDatabase _redis;
  22. //private RedisHelper _redisHelper;
  23. public AuthController(IConfiguration config, LoginRepository loginRep, IMapper mapper,
  24. SetDataRepository setDataRepository, CompanyRepository companyRepository,
  25. SystemMenuPermissionRepository systemMenuPermissionRepository)
  26. {
  27. _config = config;
  28. _loginRep = loginRep;
  29. _mapper = mapper;
  30. //_usersRepository = usersRepository;
  31. }
  32. /// <summary>
  33. /// 用户登录
  34. /// </summary>
  35. /// <param name="dto"></param>
  36. /// <returns></returns>
  37. [Route("login")]
  38. [HttpPost]
  39. [ProducesResponseType(typeof(LoginView), StatusCodes.Status200OK)]
  40. public async Task<IActionResult> LoginAsync(LoginDto dto)
  41. {
  42. #region 校验用户信息
  43. var userData = _loginRep.Login(dto);
  44. if (userData.Result.Code != 0)
  45. {
  46. if (userData.Result.Code != 0) { return Ok(JsonView(false, userData.Result.Msg)); }
  47. return Ok(JsonView(false, "暂无该员工信息!"));
  48. }
  49. #endregion
  50. var view = new LoginView
  51. {
  52. Expires = DateTime.Now.AddMinutes(30),
  53. UserInfo = userData.Result.Data
  54. };
  55. string authorId = dto.Number + "Token";
  56. var claims = new[] { new Claim(ClaimTypes.NameIdentifier, "Future") };
  57. var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["JwtSecurityKey"]));
  58. var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
  59. var token = new JwtSecurityToken(
  60. issuer: "OASystem.com",
  61. audience: "OASystem.com",
  62. claims: claims,
  63. expires: view.Expires,
  64. signingCredentials: creds);
  65. view.Token = new JwtSecurityTokenHandler().WriteToken(token);
  66. //Redis String使用示例
  67. //TimeSpan ts = new TimeSpan(0, 30, 0);
  68. //await RedisRepository.RedisFactory.CreateRedisRepository().StringSetAsync<string>("key01", "value01", ts);//string 存
  69. //string redisString = await RedisRepository.RedisFactory.CreateRedisRepository().StringGetAsync<string>("key01");//string 取
  70. return Ok(JsonView(view));
  71. }
  72. /// <summary>
  73. /// 申请注册
  74. /// </summary>
  75. /// <param name="dto"></param>
  76. /// <returns></returns>
  77. [Authorize]
  78. [HttpPost]
  79. [Route("register")]
  80. public async Task<IActionResult> Register(RegisterDto dto)
  81. {
  82. var userData = _loginRep.Register(_loginRep, dto);
  83. if (userData.Result.Code != 0)
  84. {
  85. if (userData.Result.Code != 0) { return Ok(JsonView(false, userData.Result.Msg)); }
  86. return Ok(JsonView(false, "注册失败!"));
  87. }
  88. return Ok(new { Code = 0, Msg = userData.Result.Msg });
  89. }
  90. /// <summary>
  91. /// 修改密码
  92. /// </summary>
  93. /// <param name="dto"></param>
  94. /// <returns></returns>
  95. [Authorize]
  96. [HttpPost]
  97. [Route("UpdPassword")]
  98. public async Task<IActionResult> UpdateUserPassword(UpdateDto dto)
  99. {
  100. Result result = new Result();
  101. Sys_Users sys_Users = _mapper.Map<Sys_Users>(dto);
  102. var _UpdateState = await _loginRep.UpdateAsync(s => s.Id == dto.UserId, ss => sys_Users);
  103. if (_UpdateState)
  104. {
  105. result.Code = 0;
  106. result.Msg = "申请成功!人事主管审核后且信息部经理分配了登录账号,可登录OA!";
  107. }
  108. else
  109. {
  110. result.Code = -2;
  111. result.Msg = "用户修改失败!";
  112. }
  113. return Ok(JsonView(result));
  114. }
  115. /// <summary>
  116. /// 测试auth
  117. /// </summary>
  118. /// <param name="dto"></param>
  119. /// <returns></returns>
  120. [Authorize]
  121. [HttpPost("TestToken")]
  122. [ProducesResponseType(typeof(LoginView), StatusCodes.Status200OK)]
  123. public async Task<IActionResult> TestToken(LoginDto dto)
  124. {
  125. string authorId = dto.Number + "Token";
  126. // 从Redis里面取数据
  127. //string userToken = _redis.StringGet(authorId);
  128. string userToken = "";
  129. var view = new LoginView
  130. {
  131. Token = authorId + ":" + userToken
  132. };
  133. return Ok(JsonView(view));
  134. }
  135. /// <summary>
  136. /// 权限数据页面初始化
  137. /// </summary>
  138. /// <param name="dto"></param>
  139. /// <returns></returns>
  140. [Authorize]
  141. [HttpPost("GetAuth")]
  142. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  143. public async Task<IActionResult> GetAuth(AuthDto dto)
  144. {
  145. Result result = new Result();
  146. //模块数据
  147. var setDataResult = await _setDataRepository.GetSySDefultModule(_setDataRepository);
  148. if (setDataResult.Code != 0)
  149. {
  150. return Ok(JsonView(setDataResult.Msg)) ;
  151. }
  152. List<SetDataView> setDataList = _mapper.Map<List<SetDataView>>(setDataResult.Data);
  153. var mod = setDataList.Find(x => x.Name == "权限模块");
  154. if (mod == null)
  155. {
  156. return Ok(JsonView("未找到权限模块!"));
  157. }
  158. //页面数据
  159. var SystemMenuPermissionData = _SystemMenuPermissionRepository.GetSystemMenuViweData(_SystemMenuPermissionRepository, mod.Id, dto.pageSize,dto.currentPage);
  160. if (SystemMenuPermissionData.Code != 0)
  161. {
  162. return Ok(JsonView(SystemMenuPermissionData.Msg));
  163. }
  164. //公司数据
  165. var CompanyDataResult = _CompanyRepository.GetCompanyData(_CompanyRepository);
  166. if (CompanyDataResult.Code != 0)
  167. {
  168. return Ok(JsonView(CompanyDataResult.Msg));
  169. }
  170. result.Code = 0;
  171. result.Msg = "成功!";
  172. var Dyresult = new
  173. {
  174. setDataResult = setDataResult.Data,
  175. CompanyDataResult = CompanyDataResult.Data,
  176. SystemMenuPermissionData = SystemMenuPermissionData.Data
  177. };
  178. return Ok(JsonView(200 ,"成功!", Dyresult));
  179. }
  180. /// <summary>
  181. /// 查询部门
  182. /// </summary>
  183. /// <param name="companyid"></param>
  184. /// <returns></returns>
  185. [Authorize]
  186. [HttpPost("QueryDepartmentListByCompId")]
  187. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  188. public IActionResult QueryDepartmentListByCompId(int companyid)
  189. {
  190. return Ok(JsonView(""));
  191. }
  192. }
  193. }