Advertisement
silasvasconcelos

Exemplo simples de ACL em JS

Oct 29th, 2018
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Lista de grupos e suas devidas permissões
  2. var grupos = {
  3.     ADMIN: {
  4.         post: [
  5.             'cadastrar',
  6.             'editar',
  7.             'visulaizar',
  8.             'remover',
  9.         ],
  10.         comentario: [  
  11.             'cadastrar',
  12.             'editar',
  13.             'visulaizar',
  14.             'remover',
  15.         ]
  16.     },
  17.     EDITOR: {
  18.         post: [
  19.             'cadastrar',
  20.             'editar',
  21.             'visulaizar',
  22.         ],
  23.         comentario: [  
  24.             'cadastrar',
  25.             'visulaizar',
  26.         ],
  27.     },
  28.     ASSINANTE: {
  29.         post: [
  30.             'cadastrar',
  31.             'visulaizar',
  32.         ],
  33.         comentario: [  
  34.             'cadastrar',
  35.             'visulaizar',
  36.         ]
  37.     }
  38. };
  39.  
  40. // Função para verificar se o usuário pode efetuar devida ação sobre um objeto
  41. function podeFazerDevidaAcao(usuario, acao, objeto) {
  42.     try {
  43.         // Verifica se o usuário pode efetuar uma determianda ação
  44.         return grupos[usuario.grupo][objeto].indexOf(acao) >= 0;
  45.     } catch( e ) {
  46.         // Exibe a mensagem qual foi o erro, não deve usar algo do tipo para sites em produção
  47.         console.log( e );
  48.         // retorna false por padrão, caso ocorra algum erro ou o mesmo não tenha a permissão
  49.         return false;
  50.     }
  51. }
  52.  
  53. // usuário
  54. var joao = {
  55.     nome: 'João',
  56.     grupo: 'ADMIN'
  57. };
  58.  
  59.  
  60.  
  61. // podeFazerDevidaAcao(joao, 'cadastrar', 'post') => Verificar se o João pode cadastrar novos posts
  62. if (podeFazerDevidaAcao(joao, 'cadastrar', 'post')) {
  63.     alert('O usuário ' + joao.nome + ' pode cadastrar novos posts!');
  64. } else {
  65.     alert('O usuário ' + joao.nome + ' não pode cadastrar novos posts!');
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement