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
 }