Mercurial Hosting > luan
diff src/luan/Luan.java @ 1330:f41919741100
fix security
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 11 Feb 2019 01:38:55 -0700 |
parents | 9fa8b8389578 |
children | 25746915a241 |
line wrap: on
line diff
--- a/src/luan/Luan.java Sun Feb 10 02:01:49 2019 -0700 +++ b/src/luan/Luan.java Mon Feb 11 01:38:55 2019 -0700 @@ -202,5 +202,34 @@ } */ + + + // security + + public interface Security { + public void check(LuanState luan,LuanClosure closure,String op,Object... args) throws LuanException; + } + + private static String SECURITY_KEY = "Luan.Security"; + + public static void checkSecurity(LuanState luan,String op,Object... args) throws LuanException { + check(luan,1,op,args); + } + + public static void checkCallerSecurity(LuanState luan,String op,Object... args) throws LuanException { + check(luan,2,op,args); + } + + private static void check(LuanState luan,int i,String op,Object... args) throws LuanException { + Security s = (Security)luan.registry().get(SECURITY_KEY); + if( s!=null ) + s.check(luan,luan.peek(),op,args); + } + + public static Security setSecurity(LuanState luan,Security s) { + return (Security)luan.registry().put(SECURITY_KEY,s); + } + + private Luan() {} // never }