UserController.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using molilian.core;
  2. using dodohold.core;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Org.BouncyCastle.Ocsp;
  5. using System.Text.Json;
  6. using System.Runtime.InteropServices;
  7. using TencentCloud.Scf.V20180416.Models;
  8. using Quartz.Impl.AdoJobStore.Common;
  9. using TencentCloud.Gaap.V20180529.Models;
  10. namespace molilian.api.Controllers
  11. {
  12. [ApiController]
  13. [Route("api/[controller]/[action]")]
  14. public class UserController : ControllerBase
  15. {
  16. readonly IAuthorizationProvider provider = new AdminProvider();
  17. protected IHttpContextAccessor _accessor;
  18. public UserController(IHttpContextAccessor accessor)
  19. {
  20. _accessor = accessor;
  21. }
  22. [HttpPost]
  23. public ActionResult login([FromBody] JsonElement form)
  24. {
  25. var domain = _accessor.HttpContext.GetApiDomain();
  26. string username = form.Read("username", string.Empty);
  27. string password = form.Read("password", string.Empty);
  28. if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) return new APIResult(new { msg = "账号密码不正确" }, APIResultCodeEnum.InvalidRequest);
  29. var user = new DBContext.Table("admins").Get<dynamic>("username=@username", new { username });
  30. if (user == null) return new APIResult(new { msg = "账号密码不正确" }, APIResultCodeEnum.InvalidRequest);
  31. if (user.status != 1) return new APIResult(new { msg = "账号密码不正确" }, APIResultCodeEnum.InvalidRequest);
  32. string dbPassword = user.password;
  33. var config = TkConfigCore.Get();
  34. string pwd = $"{password}{config.pass_salt}".MD5();
  35. if (!dbPassword.Equals(pwd)) return new APIResult(new { msg = "账号密码不正确" }, APIResultCodeEnum.InvalidRequest);
  36. //检查登录,然后发布token
  37. var accessToken = provider.Create(user.id, username, password, user.roles, domain, _accessor.HttpContext.GetUserIp());
  38. if (accessToken == null)
  39. {
  40. return new APIResult(new { msg = "账号/密码无效或已被禁用" }, APIResultCodeEnum.InvalidRequest);
  41. }
  42. return new APIResult(new { data = accessToken });
  43. }
  44. [HttpPost]
  45. public ActionResult logout()
  46. {
  47. (var ticket, var domain) = _accessor.HttpContext.GetAccessToken();
  48. provider.Revoke(domain, ticket);
  49. return new APIResult(new { success = true, message = "ok" });
  50. }
  51. [HttpPost]
  52. public ActionResult menu()
  53. {
  54. return new APIResult(new { success = true, message = "ok" });
  55. }
  56. [HttpPost]
  57. public ActionResult info()
  58. {
  59. return new APIResult(new { success = true, message = "ok" });
  60. }
  61. }
  62. }