VsCodeController.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Attribute;
  2. using Base;
  3. using Common;
  4. using Dto;
  5. using Enums;
  6. using Extensions;
  7. using Filters;
  8. using Infrastructure;
  9. using Infrastructure.Model;
  10. using Mapster;
  11. using Microsoft.AspNetCore.Mvc;
  12. using Middleware;
  13. using Model;
  14. using Model.Base;
  15. using Services;
  16. using Util;
  17. using Vo;
  18. namespace Controllers.Feign
  19. {
  20. public class VsCodeController : BaseController
  21. {
  22. private readonly ISysUserService sysUserService;
  23. private readonly ISysPermissionService permissionService;
  24. private readonly ISysRoleService roleService;
  25. private readonly ISysLoginService sysLoginService;
  26. public VsCodeController(ISysUserService sysUserService, ISysPermissionService permissionService, ISysRoleService roleService, ISysLoginService sysLoginService)
  27. {
  28. this.sysUserService = sysUserService;
  29. this.permissionService = permissionService;
  30. this.roleService = roleService;
  31. this.sysLoginService = sysLoginService;
  32. }
  33. /// <summary>
  34. /// vscode登录
  35. /// </summary>
  36. /// <param name="param"></param>
  37. /// <returns></returns>
  38. [HttpPost("/v1/omega_admin/vscode/login")]
  39. public IActionResult login([FromBody] VsLoginDto param)
  40. {
  41. SysUser user = sysUserService.GetFirst(m => m.username == param.username) ?? new SysUser();
  42. string password = Function.MD532(param.password + user.salt);
  43. if(password != user.password)
  44. {
  45. return ToResponse(ResultCode.BAD_REQUEST, "用户名或密码错误");
  46. }
  47. List<SysRole> roles = roleService.SelectUserRoleListByUserId(user.userId);
  48. List<string> permissions = permissionService.GetMenuPermission(user);
  49. TokenModel loginUser = new(user.Adapt<TokenModel>(), roles.Adapt<List<Roles>>());
  50. CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.userId, permissions);
  51. var result = sysLoginService.GetLoginInfo(loginUser);
  52. loginUser.refreshToken = result.refresh_token;
  53. return SUCCESS(new LoginVo
  54. {
  55. token = result.access_token,
  56. refreshToken = result.refresh_token
  57. });
  58. }
  59. /// <summary>
  60. /// vscode刷新Token
  61. /// </summary>
  62. /// <param name="param"></param>
  63. /// <returns></returns>
  64. [HttpPost("/v1/omega_admin/vscode/refreshToken")]
  65. public IActionResult refreshToken([FromBody] VsRefreshTokenDto param)
  66. {
  67. TokenModel tokenModel = JwtUtil.GetLoginUser(HttpContext);
  68. if(tokenModel == null)
  69. {
  70. return ToResponse(ResultCode.BAD_REQUEST, "用户未登录");
  71. }
  72. if(tokenModel.refreshToken != param.refreshToken)
  73. {
  74. return ToResponse(ResultCode.BAD_REQUEST, "刷新令牌错误");
  75. }
  76. SysUser user = sysUserService.GetFirst(m => m.userId == tokenModel.userId) ?? new SysUser();
  77. List<SysRole> roles = roleService.SelectUserRoleListByUserId(user.userId);
  78. List<string> permissions = permissionService.GetMenuPermission(user);
  79. TokenModel loginUser = new(user.Adapt<TokenModel>(), roles.Adapt<List<Roles>>());
  80. CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.userId, permissions);
  81. var result = sysLoginService.GetLoginInfo(loginUser);
  82. return SUCCESS(new LoginVo
  83. {
  84. token = result.access_token,
  85. refreshToken = result.refresh_token
  86. });
  87. }
  88. }
  89. }