Making Roles Multi-Tenant

    1. {
    2. protected override void SetInternalFields()
    3. {
    4. base.SetInternalFields();
    5. if (IsCreate)
    6. Row.TenantId = ((UserDefinition)Authorization.UserDefinition).TenantId;
    7. }
    8. protected override void ValidateRequest()
    9. {
    10. base.ValidateRequest();
    11. if (IsUpdate)
    12. {
    13. var user = (UserDefinition)Authorization.UserDefinition;
    14. if (Old.TenantId != user.TenantId)
    15. }
    16. }
    17. private class MyDeleteHandler : DeleteRequestHandler<MyRow>
    18. {
    19. protected override void ValidateRequest()
    20. {
    21. base.ValidateRequest();
    22. var user = (UserDefinition)Authorization.UserDefinition;
    23. if (Row.TenantId != user.TenantId)
    24. Authorization.ValidatePermission(PermissionKeys.Tenants);
    25. }
    26. }
    27. private class MyRetrieveHandler : RetrieveRequestHandler<MyRow>
    28. {
    29. base.PrepareQuery(query);
    30. var user = (UserDefinition)Authorization.UserDefinition;
    31. if (!Authorization.HasPermission(PermissionKeys.Tenants))
    32. query.Where(fld.TenantId == user.TenantId);
    33. }
    34. }
    35. private class MyListHandler : ListRequestHandler<MyRow>
    36. {
    37. protected override void ApplyFilters(SqlQuery query)
    38. {
    39. base.ApplyFilters(query);
    40. var user = (UserDefinition)Authorization.UserDefinition;
    41. if (!Authorization.HasPermission(PermissionKeys.Tenants))
    42. query.Where(fld.TenantId == user.TenantId);