You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LuUsersController.cs 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System.ComponentModel.DataAnnotations;
  2. using Luticate2.Auth.Attributes;
  3. using Luticate2.Auth.Business;
  4. using Luticate2.Auth.Dbo.Permissions;
  5. using Luticate2.Auth.Dbo.Users;
  6. using Luticate2.Auth.Interfaces.Users;
  7. using Luticate2.Utils.Controllers;
  8. using Luticate2.Utils.Dbo.Basic;
  9. using Luticate2.Utils.Dbo.PaginatedRequest;
  10. using Luticate2.Utils.Dbo.Result;
  11. using Luticate2.Utils.Utils;
  12. using Microsoft.AspNetCore.Http;
  13. using Microsoft.AspNetCore.Mvc;
  14. using Microsoft.Extensions.Options;
  15. namespace Luticate2.Auth.Controllers
  16. {
  17. [Route(LuAuthExtensions.RoutePrefix + "/[controller]")]
  18. public class LuUsersController : LuController
  19. {
  20. private const string EntityType = LuEntityTypes.LuUsers;
  21. private const string ReadPermission = LuPermissions.LuGroupsRead;
  22. private const string WritePermission = LuPermissions.LuGroupsWrite;
  23. private readonly ILuUsersBusiness _busines;
  24. public LuUsersController(ILuUsersBusiness busines, IOptions<LuUtilsOptionsDbo> luUtilsOptionsDbo) : base(luUtilsOptionsDbo)
  25. {
  26. _busines = busines;
  27. }
  28. [HttpGet("{id}")]
  29. [LuPermission(ReadPermission, EntityType)]
  30. public LuApiWrapperDbo<LuUsersDbo> GetSingleById([LuPermissionArg][Required]string id)
  31. {
  32. return Handle(_busines.GetSingleById(id).ToLite());
  33. }
  34. [HttpGet]
  35. [LuPermission(ReadPermission, EntityType)]
  36. public LuApiWrapperDbo<LuPaginatedDbo<LuUsersDbo>> GetMultiple([Required]LuPaginatedRequestDbo request)
  37. {
  38. return Handle(_busines.GetMultiple(request).ToLite());
  39. }
  40. [HttpPost]
  41. [LuPermission(WritePermission, EntityType)]
  42. public LuApiWrapperDbo<LuUsersDbo> Register([Required]LuUsersAddDbo data)
  43. {
  44. return Handle(_busines.Register(data).ToLite());
  45. }
  46. [HttpPost("{id}")]
  47. [LuPermission(WritePermission, EntityType)]
  48. public LuApiWrapperDbo<LuUsersDbo> Edit([LuPermissionArg][Required]string id, [Required]LuUsersEditDbo data)
  49. {
  50. return Handle(_busines.Edit(id, data).ToLite());
  51. }
  52. [HttpDelete("{id}")]
  53. [LuPermission(WritePermission, EntityType)]
  54. public LuApiWrapperDbo<LuUsersDbo> Delete([LuPermissionArg][Required]string id)
  55. {
  56. return Handle(_busines.DeleteSingleByIdDbo(id).ToLite());
  57. }
  58. [HttpPost("login")]
  59. public LuApiWrapperDbo<LuUsersLoginResultDbo> Login([Required]string username, [Required]string password)
  60. {
  61. var loginRes = _busines.Login(username, password);
  62. if (loginRes)
  63. {
  64. Response.Cookies.Append(LuAuthExtensions.TokenCookieName, loginRes.Data.Token, new CookieOptions
  65. {
  66. HttpOnly = true,
  67. Secure = true
  68. });
  69. }
  70. return Handle(loginRes);
  71. }
  72. [HttpPost("logout")]
  73. public LuApiWrapperDbo<bool> Logout()
  74. {
  75. var token = HttpContext.GetLuUserToken();
  76. if (token != null)
  77. {
  78. Response.Cookies.Delete(LuAuthExtensions.TokenCookieName);
  79. return Handle(_busines.Logout(token));
  80. }
  81. return Handle(LuResult<bool>.Ok(true));
  82. }
  83. [HttpGet("me")]
  84. public LuApiWrapperDbo<LuUsersDbo> Me()
  85. {
  86. return Handle(_busines.Me().ToLite());
  87. }
  88. }
  89. }