Go to file
Thulio Bittencourt 9ccc0ffcb9 Update README.md
2021-04-07 22:17:58 -03:00
assets Initial Commit 2021-04-07 19:04:55 -03:00
samples refactor 2021-04-07 22:03:05 -03:00
src refactor 2021-04-07 22:03:05 -03:00
.gitignore Initial commit 2021-04-07 19:02:03 -03:00
boss-lock.json refactor 2021-04-07 22:03:05 -03:00
boss.json refactor 2021-04-07 22:03:05 -03:00
LICENSE Initial commit 2021-04-07 19:02:03 -03:00
RbacProjectGroup.groupproj Initial Commit 2021-04-07 19:04:55 -03:00
README.md Update README.md 2021-04-07 22:17:58 -03:00
Safety4Delphi.dpk Initial Commit 2021-04-07 19:04:55 -03:00
Safety4Delphi.dproj Initial Commit 2021-04-07 19:04:55 -03:00
Safety4Delphi.res Initial Commit 2021-04-07 19:04:55 -03:00

safety4d


Safety4D

Framework para Controle de Regras de Acesso de Usuários inspirado no conceito RBAC.

Instalação

Basta registrar no Library Path do seu Delphi o caminho da pasta SRC da Biblioteca ou utilizar o Boss (https://github.com/HashLoad/boss) para facilitar ainda mais, executando o comando

boss install https://github.com/bittencourtthulio/safety4d

Primeiros Passos - Tutorial

Para utilizar o Safety4D você deve adicionar a uses

Safety4D

Como funciona

O Safety4D foi baseado no conceito de RBAC ( role-based access control) https://pt.wikipedia.org/wiki/Controle_de_acesso_baseado_em_fun%C3%A7%C3%B5es

Ele se baseia em uma estrutura JSON de configuração para definição das permissões, inspirada na estrutura utilizada pelo Windows Azure.

https://docs.microsoft.com/pt-br/azure/role-based-access-control/overview

Abaixo o exemplo de um arquivo de configuração

{
    "resources": {
        "safety4d": {
            "users": {
                "actions": {
                    "read": {
                        "description": "read-only",
                        "errormsg": "not permit"
                    },
                    "write": {
                        "description": "read-write",
                        "errormsg": "not write data"
                    },
                    "delete": {
                        "description": "delete-data",
                        "errormsg": "not delete data"
                    },
                    "view": {
                        "description": "view data",
                        "errormsg": "not view data"
                    }
                }
            }
        }
    },
    "groupPermission": {
        "{4D62E4C3-C73D-488A-8518-03A9545B5611}": {
            "key": "Gerente",
            "description": "Permissoes completa de gestao do Sistema",
            "Actions": [
                "users.write"
            ],
            "NotActions": [
                "*"
            ]
        },
        "{C188D1AB-EC28-4380-96E0-D1B13A29A8B3}": {
            "key": "Comercial",
            "description": "Permissoes de Recursos Comerciais",
            "Actions": [
                "*"
            ],
            "NotActions": [
                "users.delete",
                "users.write"
            ]
        }
    },
    "userKeys": {
        "{34C940ED-50E7-4CE3-B701-03CF1E15F28B}": {
            "description": "Fulano de Tal",
            "permissionGroups": [
                "{4D62E4C3-C73D-488A-8518-03A9545B5611}"
            ]
        },
        "{96B4C46F-0EBB-443B-B309-09C81844406E}": {
            "description": "Beltrano",
            "permissionGroups": [
                "{C188D1AB-EC28-4380-96E0-D1B13A29A8B3}"
            ]
        }
    }
}

Explicando a Estrutura

Abaixo vou detalhar cada bloco do JSON acima explicando o objetivo e a aplicação de cada recurso.

Resources

Neste bloco você vai cadastrar a sua aplicação, os recursos dela e as ações que você deseja validar.

"resources": {
        "safety4d": {
            "users": {
                "actions": {
                    "read": {
                        "description": "read-only",
                        "errormsg": "not permit"
                    },
                    "write": {
                        "description": "read-write",
                        "errormsg": "not write data"
                    },
                    "delete": {
                        "description": "delete-data",
                        "errormsg": "not delete data"
                    },
                    "view": {
                        "description": "view data",
                        "errormsg": "not view data"
                    }
                }
            }
        }
    },

No exemplo acima, estamos cadastrando a aplicação chamada safety4d, o recursos chamados users e as ações disponíveis neste recurso read, write, delete, view .


Você pode cadastrar quantas ações desejar para um recurso.