日期:2014-05-16 浏览次数:20339 次
dbo.users = function(){ var users = panda.db.get("users"); return { list: function() { if (!users.count()) { init(); } return users.list().$sort({ name: 1 }); }, add: function(user) { users.insert(user); return this.list(); }, update: function(user) { var q = { name: user.name }; users.update(q, user, true, false); return this.list(); }, remove: function(name) { users.remove({ name: name }); return this.list(); } }; function init() { panda.db.eval(function(){ var users = db.users; users.drop(); users.ensureIndex({ name: 1 }, { unique: true }); users.insert({ name: "user1", desc: "desc1" }); users.insert({ name: "user2", desc: "desc2" }); users.insert({ name: "user3", desc: "desc3" }); }); } }();
var views = {}; views.index = function($, users) { var content = $("#content-tmpl").tmpl(), rows = $("#user-tmpl").tmpl(users); $("#content").html(content); $("#content tr:first").after(rows); $("#error").hide(); };
(function() { var log = panda.log("proxy.security"); proxy.security = { priority: 80 }; // 对 page.* 的调用进行权限控制 proxy.security.page = { priority: 100, expr: /^page./, func: function(name, method, args) { // 获取方法的第二个参数,即 req var req = args[1]; // 读取 session 中的role。返回值是 java.lang.String // 加上空字符串转为 JavaScript 中的 String var role = req.session.getAttribute("user.role") + ""; // 如果角色是 "admin",则显示相应页面 // 否则,显示登录页面 if (role === "admin") { return this[method].apply(this, args); } else { log.info("Redirect to login page."); return panda.render("login"); } } } // 利用类似的方法对 api.* 的调用进行权限控制,略 proxy.security.api = { ... } }());
page.index = function(params, req, res) { return panda.render("index", function($){ views.index($, dbo.users.list()); }); };
$(function(){ bind(); // 其他代码,略 // 每次修改数据时重新渲染页面、绑定事件 function show(users) { views.index($, users); bind(); } });