OperatorModel.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using CZFW.Framework.Model.ViewModel;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Linq;
  6. using Microsoft.AspNetCore.Http;
  7. using CZFW.Framework.Model.Entity;
  8. namespace CZFW.Framework.Model
  9. {
  10. public class OperatorModel
  11. {
  12. public int UserId { get; set; }
  13. public string DisplayName { get; set; }
  14. public string Avatar { get; set; }
  15. public string UserName { get; set; }
  16. public bool IsSystem { get; set; }
  17. public bool IsSiteAdmin { get; set; }
  18. /// <summary>
  19. /// 所属企业Id, 在用户为客户企业超级管理员或者普通用户时有效。
  20. /// </summary>
  21. public int SiteId { get; set; }
  22. public IList<PrivilegeModel> Privileges { get; set; } = new List<PrivilegeModel>();
  23. public IList<CustomerUserPrivilegeModel> CustomerUserPriveleges { get; set; }
  24. public bool HasAccess(string url)
  25. {
  26. var uri = new PathString(url);
  27. return HasAccess(uri);
  28. }
  29. public bool HasAccess(PathString path)
  30. {
  31. var url = path.ToString().Trim();
  32. var res = Privileges.Count(x => x.Url == url);
  33. return res > 0;
  34. }
  35. public bool HasAccess(int siteId, int dataId, int dataLevel)
  36. {
  37. if (IsSystem) return true;
  38. if (IsSiteAdmin && SiteId == siteId) return true;
  39. if (dataId == 0)
  40. return CustomerUserPriveleges.Any(x => x.EntId == SiteId);
  41. var count = CustomerUserPriveleges.Any(x => x.EntId == siteId && x.DataLevel == dataLevel && x.DataId == dataId);
  42. return count;
  43. }
  44. }
  45. }