Is it possible to use jsonLogic "or" to filter a user permissioning?

@tiago questionou:

Boa noite,
Tenho uma dúvida, é possível usar jsonLogic “or” (ou), para filtrar a permissão de um usuário à uma tabela?
Por exemplo quero que um usuário possa ver os itens de uma tabela se o item foi criado por ele (created_by == user_id) ou se o item foi criado por outra pessoa mas colocou ele como proprietário daquele item (proprietario_do_item == user_id).

Ou seja, gostaria de saber se posso filtrar o item usando a lógica (created_by == user_id) || (proprietario_do_item == user_id).
Isso é possível? Poderiam me fornecer um exemplo, por favor.
Obrigado,
Tiago

@fernando.nakandakari can you help with this one?

Hey @tiago

Yes, it’s possible! The way to this is as follows:

{
	"manage_users": 0,
	"create_table": 0,
	"create_dashboard": 0,
	"tables_enabled": {
		"candidaturas": {
			"data": [
				{
					"OR": [
					    {
							"field": "owner",
							"reference": "id_user"
						},
						{
							"field": "stage",
							"value": "Interview"
						}
					]
				}
			],
			"fields_excluded": [],
			"fields_readonly": [],
			"manage_structure": 0,
			"can_delete": 0,
			"can_create": 0
		}
	},
	"tables_disabled": [],
	"pages_enabled": {},
	"pages_disabled": [],
	"dashboards_enabled": {
		"*": "*"
	},
	"dashboards_disabled": []
}

The permissioning above will let the user see the records it’s assigned to in the “owner” field, but also any record that is in the “Interview” stage regardless of owner. To do that, all you have to do that is encase the conditions in the same object, with the “OR” key.

Hope that helps!

Opa @tiago

É possível sim! A forma seria a seguinte:

{
	"manage_users": 0,
	"create_table": 0,
	"create_dashboard": 0,
	"tables_enabled": {
		"candidaturas": {
			"data": [
				{
					"OR": [
					    {
							"field": "owner",
							"reference": "id_user"
						},
						{
							"field": "stage",
							"value": "Interview"
						}
					]
				}
			],
			"fields_excluded": [],
			"fields_readonly": [],
			"manage_structure": 0,
			"can_delete": 0,
			"can_create": 0
		}
	},
	"tables_disabled": [],
	"pages_enabled": {},
	"pages_disabled": [],
	"dashboards_enabled": {
		"*": "*"
	},
	"dashboards_disabled": []
}

O permissionamento acima deixará o usuário ver registros aos quais ele está atribuído pelo campo “owner”, mas também a qualquer registro que esteja no estágio “Interview” independente do owner. Para fazer isso, basta encapsular as condições de filtro no mesmo objeto, com a chave “OR”.

Espero que ajude!