raphaelcarlosr
7/25/2014 - 5:29 PM

AngularJS

AngularJS

// security.js
{
    // 'user' is a default role for all
    roles: {
        'asshole': ['user'],
        'project_leader': ['user'], 
        'manager': ['project_leader', 'asshole'], 
        'admin': ['manager']
    },
    permissions: {
        "welcome": {},
        "user_details": {
            requireLogin: true,
            roles: ['user', 'admin']
        },
        "payments_remove": {
            requireLogin: true,
            roles: ['admin']
        },
        {
            key: 'todo_list_remove',
            controller: 'Todo_List',
            action: 'remove',
            roles: ['project_leader', 'manager']
        }
    }
}
// routes.js
{
    "/welcome": {
        templateUrl: 'partials/welcome.html', 
        controller: 'WelcomeCtrl',
        name: 'welcome'
    },
    "/user-details": {
        templateUrl: 'partials/userDetails.html', 
        controller: 'UserDetailsCtrl', 
        requireLogin: true,
        name: 'user_details'
    },
    "/payments/remove/:id": {
        templateUrl: 'partials/userDetails.html', 
        controller: 'UserDetailsCtrl',
        name: 'payments_remove'
    }
}
AngularACL

Criar as classes:
    UserObj, onde é obrigatório ter a as propriedades:
        - isLogged: true|false
        - roles: array
        - name: string
    Security, onde irá ter métodos para checagem de permissão, recebendo o usuário (instância de UserObj)
    e o nome da rota, onde irá checar se a rota existe, e se existir, checa se o usuário possui alguma das 
    roles que a rota necessita.

Criar directive onde recebe o nome da rota e o usuário (instância de UserObj), que chama o Security para verificar, 
e se não tiver permissão garantida, esconde o elemento (div, link e etc).

Inspiração: https://coderwall.com/p/f6brkg e a necessidade de controlar os recursos (rotas e ações) via permissões.