Atualmente, pode beneficiar de uma poderosa funcionalidade para filtrar o acesso aos dados, o que é essencial para impedir o acesso malicioso à sua aplicação.
Esta funcionalidade utiliza privilégios que permitem determinadas acções nos seus dados. Esses privilégios são atribuídos aos usuários através de funções e armazenados na sessão durante a autenticação.
Em 4D 20R6, melhoramos essa funcionalidade permitindo-lhe inspecionar os privilégios na Session, o que é muito útil para depuração.
Continue lendo para aprender mais.
uma nova função getPrivileges() no objeto Session
Vamos dar uma olhada em um exemplo.
No arquivo roles.json, temos o privilégio medium contendo o privilégio simple. A função Medium contém o privilégio medium.
{
"privileges": [
{
"privilege": "simple",
"includes": []
},
{
"privilege": "medium",
"includes": [
"simple"
]
}
],
"roles": [
{
"role": "Medium",
"privileges": [
"medium"
]
}
],
"permissions": {
"allowed": [] // Estabelece as ações permitidas
}
}
Na classe Datastore, há uma função authentify() que atribui todos os privilégios da função dada para o Session.
exposed Function authentify($role : Text) : Text
Session.clearPrivileges()
Session.setPrivileges({roles: $role})
return "Authentication done with "+$role
Na classe Datastore, também foi implementada uma função getPrivileges(). Devolve os privilégios em Session.
exposed Function getPrivileges() : Collection
return Session.getPrivileges()
Se a função authentify() for chamada com a função Medium, a função getPrivileges() é devolvida:
[
"simple",
"medium"
]
Nova API REST /$info/privileges
Há também uma nova API REST para obter os privilégios na sessão. A chamada de /$info/privileges no exemplo acima também retorna:
{
"privileges": [
{
"privilege": "simple"
},
{
"privilege": "medium"
}
]
}
Isso facilita a depuração. Consulte a documentação para saber mais.