Making Roles Multi-Tenant
{
protected override void SetInternalFields()
{
base.SetInternalFields();
if (IsCreate)
Row.TenantId = ((UserDefinition)Authorization.UserDefinition).TenantId;
}
protected override void ValidateRequest()
{
base.ValidateRequest();
if (IsUpdate)
{
var user = (UserDefinition)Authorization.UserDefinition;
if (Old.TenantId != user.TenantId)
}
}
private class MyDeleteHandler : DeleteRequestHandler<MyRow>
{
protected override void ValidateRequest()
{
base.ValidateRequest();
var user = (UserDefinition)Authorization.UserDefinition;
if (Row.TenantId != user.TenantId)
Authorization.ValidatePermission(PermissionKeys.Tenants);
}
}
private class MyRetrieveHandler : RetrieveRequestHandler<MyRow>
{
base.PrepareQuery(query);
var user = (UserDefinition)Authorization.UserDefinition;
if (!Authorization.HasPermission(PermissionKeys.Tenants))
query.Where(fld.TenantId == user.TenantId);
}
}
private class MyListHandler : ListRequestHandler<MyRow>
{
protected override void ApplyFilters(SqlQuery query)
{
base.ApplyFilters(query);
var user = (UserDefinition)Authorization.UserDefinition;
if (!Authorization.HasPermission(PermissionKeys.Tenants))
query.Where(fld.TenantId == user.TenantId);