@@ -4,10 +4,10 @@ import { createCachePlugin } from './cache-plugin';
44import { createNotificationPlugin } from './notification-plugin' ;
55import { createValidationPlugin } from './validation-plugin' ;
66
7- // Exemplo de uso do sistema de plugins funcional
7+ // Example of using the functional plugin system
88
9- async function exemploUso ( ) {
10- // 1. Criar instância RBAC básica
9+ async function usageExample ( ) {
10+ // 1. Create basic RBAC instance
1111 const rbac = RBAC ( ) ( {
1212 user : {
1313 can : [ 'products:read' ]
@@ -18,10 +18,10 @@ async function exemploUso() {
1818 }
1919 } ) ;
2020
21- // 2. Adicionar sistema de plugins
21+ // 2. Add plugin system
2222 const rbacWithPlugins = createRBACWithPlugins ( rbac ) ;
2323
24- // 3. Instalar plugins
24+ // 3. Install plugins
2525 await rbacWithPlugins . plugins . install (
2626 createCachePlugin ( {
2727 enabled : true ,
@@ -65,126 +65,126 @@ async function exemploUso() {
6565 ) ;
6666
6767 // 4. Usar RBAC com plugins
68- console . log ( 'Testando verificação de permissão com plugins...' ) ;
68+ console . log ( 'Testing permission check with plugins...' ) ;
6969
7070 const result1 = await rbacWithPlugins . can ( 'user' , 'products:read' ) ;
71- console . log ( 'User pode ler produtos :' , result1 ) ; // true
71+ console . log ( 'User can read products :' , result1 ) ; // true
7272
7373 const result2 = await rbacWithPlugins . can ( 'user' , 'products:write' ) ;
74- console . log ( 'User pode escrever produtos :' , result2 ) ; // false
74+ console . log ( 'User can write products :' , result2 ) ; // false
7575
7676 const result3 = await rbacWithPlugins . can ( 'admin' , 'products:delete' ) ;
77- console . log ( 'Admin pode deletar produtos :' , result3 ) ; // true
77+ console . log ( 'Admin can delete products :' , result3 ) ; // true
7878
79- // 5. Listar plugins instalados
79+ // 5. List installed plugins
8080 const plugins = rbacWithPlugins . plugins . getPlugins ( ) ;
81- console . log ( 'Plugins instalados :' , plugins . map ( ( p : any ) => p . name ) ) ;
81+ console . log ( 'Installed plugins :' , plugins . map ( ( p : any ) => p . name ) ) ;
8282
83- // 6. Usar hooks utilitários
83+ // 6. Use utility hooks
8484 const businessHoursFilter = rbacWithPlugins . hooks . createBusinessHoursFilter ( ) ;
8585 const userFilter = rbacWithPlugins . hooks . createUserFilter ( [ 'user1' , 'user2' ] ) ;
8686 const logger = rbacWithPlugins . hooks . createLogger ( 'info' ) ;
8787
88- // 7. Exemplo de plugin customizado
88+ // 7. Custom plugin example
8989 const customPlugin = {
9090 metadata : {
9191 name : 'custom-logger' ,
9292 version : '1.0.0' ,
93- description : 'Plugin customizado para logging detalhado ' ,
94- author : 'Desenvolvedor ' ,
93+ description : 'Custom plugin for detailed logging ' ,
94+ author : 'Developer ' ,
9595 keywords : [ 'logging' , 'custom' ]
9696 } ,
9797
9898 install : async ( context : any ) => {
99- context . logger ( 'Plugin customizado instalado !' , 'info' ) ;
99+ context . logger ( 'Custom plugin installed !' , 'info' ) ;
100100 } ,
101101
102102 uninstall : ( ) => {
103- console . log ( 'Plugin customizado desinstalado !' ) ;
103+ console . log ( 'Custom plugin uninstalled !' ) ;
104104 } ,
105105
106106 getHooks : ( ) => ( {
107107 beforePermissionCheck : async ( data : any , context : any ) => {
108- context . logger ( `Verificando permissão : ${ data . role } -> ${ data . operation } ` , 'info' ) ;
108+ context . logger ( `Checking permission : ${ data . role } -> ${ data . operation } ` , 'info' ) ;
109109 return data ;
110110 } ,
111111
112112 afterPermissionCheck : async ( data : any , context : any ) => {
113- context . logger ( `Resultado : ${ data . result ? 'PERMITIDO ' : 'NEGADO ' } ` , 'info' ) ;
113+ context . logger ( `Result : ${ data . result ? 'ALLOWED ' : 'DENIED ' } ` , 'info' ) ;
114114 return data ;
115115 }
116116 } )
117117 } ;
118118
119119 await rbacWithPlugins . plugins . install ( customPlugin ) ;
120120
121- // 8. Testar com plugin customizado
122- console . log ( '\nTestando com plugin customizado ...' ) ;
121+ // 8. Test with custom plugin
122+ console . log ( '\nTesting with custom plugin ...' ) ;
123123 await rbacWithPlugins . can ( 'user' , 'products:read' ) ;
124124
125- // 9. Desabilitar plugin
125+ // 9. Disable plugin
126126 await rbacWithPlugins . plugins . disable ( 'custom-logger' ) ;
127- console . log ( 'Plugin customizado desabilitado ' ) ;
127+ console . log ( 'Custom plugin disabled ' ) ;
128128
129- // 10. Reabilitar plugin
129+ // 10. Re-enable plugin
130130 await rbacWithPlugins . plugins . enable ( 'custom-logger' ) ;
131- console . log ( 'Plugin customizado reabilitado ' ) ;
131+ console . log ( 'Custom plugin re-enabled ' ) ;
132132
133- // 11. Desinstalar plugin
133+ // 11. Uninstall plugin
134134 await rbacWithPlugins . plugins . uninstall ( 'custom-logger' ) ;
135- console . log ( 'Plugin customizado desinstalado ' ) ;
135+ console . log ( 'Custom plugin uninstalled ' ) ;
136136}
137137
138- // Exemplo de plugin de middleware
138+ // Middleware plugin example
139139export const createExpressMiddlewarePlugin = ( app : any ) => ( {
140140 metadata : {
141141 name : 'express-middleware' ,
142142 version : '1.0.0' ,
143- description : 'Plugin para integração com Express.js' ,
143+ description : 'Plugin for Express.js integration ' ,
144144 author : 'RBAC Team' ,
145145 keywords : [ 'express' , 'middleware' , 'http' ]
146146 } ,
147147
148148 install : async ( context : any ) => {
149- context . logger ( 'Express middleware plugin instalado ' , 'info' ) ;
149+ context . logger ( 'Express middleware plugin installed ' , 'info' ) ;
150150 } ,
151151
152152 uninstall : ( ) => {
153- console . log ( 'Express middleware plugin desinstalado ' ) ;
153+ console . log ( 'Express middleware plugin uninstalled ' ) ;
154154 } ,
155155
156156 getHooks : ( ) => ( {
157157 beforePermissionCheck : async ( data : any , context : any ) => {
158- // Adicionar informações da requisição HTTP
158+ // Add HTTP request information
159159 return {
160160 ...data ,
161161 metadata : {
162162 ...data . metadata ,
163- httpMethod : 'GET' , // Exemplo
164- userAgent : 'Mozilla/5.0...' , // Exemplo
165- ipAddress : '192.168.1.1' // Exemplo
163+ httpMethod : 'GET' , // Example
164+ userAgent : 'Mozilla/5.0...' , // Example
165+ ipAddress : '192.168.1.1' // Example
166166 }
167167 } ;
168168 }
169169 } )
170170} ) ;
171171
172- // Exemplo de plugin de cache Redis
172+ // Redis cache plugin example
173173export const createRedisCachePlugin = ( redisClient : any ) => ( {
174174 metadata : {
175175 name : 'redis-cache' ,
176176 version : '1.0.0' ,
177- description : 'Plugin de cache usando Redis' ,
177+ description : 'Cache plugin using Redis' ,
178178 author : 'RBAC Team' ,
179179 keywords : [ 'redis' , 'cache' , 'performance' ]
180180 } ,
181181
182182 install : async ( context : any ) => {
183- context . logger ( 'Redis cache plugin instalado ' , 'info' ) ;
183+ context . logger ( 'Redis cache plugin installed ' , 'info' ) ;
184184 } ,
185185
186186 uninstall : ( ) => {
187- console . log ( 'Redis cache plugin desinstalado ' ) ;
187+ console . log ( 'Redis cache plugin uninstalled ' ) ;
188188 } ,
189189
190190 getHooks : ( ) => ( {
@@ -210,16 +210,16 @@ export const createRedisCachePlugin = (redisClient: any) => ({
210210 afterPermissionCheck : async ( data : any , context : any ) => {
211211 if ( data . result !== undefined ) {
212212 const cacheKey = `rbac:${ data . role } :${ data . operation } ` ;
213- await redisClient . setex ( cacheKey , 300 , JSON . stringify ( data . result ) ) ; // 5 minutos
214- context . logger ( `Resultado armazenado no Redis: ${ cacheKey } ` , 'info' ) ;
213+ await redisClient . setex ( cacheKey , 300 , JSON . stringify ( data . result ) ) ; // 5 minutes
214+ context . logger ( `Result stored in Redis: ${ cacheKey } ` , 'info' ) ;
215215 }
216216
217217 return data ;
218218 }
219219 } )
220220} ) ;
221221
222- // Executar exemplo
222+ // Run example
223223if ( require . main === module ) {
224- exemploUso ( ) . catch ( console . error ) ;
224+ usageExample ( ) . catch ( console . error ) ;
225225}
0 commit comments