jbe/bsw@0: User = mondelefant.new_class() jbe/bsw@0: User.table = 'user' jbe/bsw@0: jbe/bsw@0: User:add_reference{ jbe/bsw@0: mode = '1m', -- one (1) user can have many (m) sessions jbe/bsw@0: to = "Session", -- referenced model (quoting avoids auto-loading here) jbe/bsw@0: this_key = 'id', -- own key in user table jbe/bsw@0: that_key = 'user_id', -- other key in session table jbe/bsw@0: ref = 'sessions', -- name of reference jbe/bsw@0: back_ref = 'user', -- each autoloaded Session automatically refers back to the User jbe/bsw@0: default_order = '"ident"' -- order sessions by SQL expression "ident" jbe/bsw@0: } jbe/bsw@0: jbe/bsw@0: function User:by_ident_and_password(ident, password) jbe/bsw@0: local selector = self:new_selector() jbe/bsw@0: selector:add_where{ 'ident = ? AND password = ?', ident, password } jbe/bsw@0: selector:optional_object_mode() jbe/bsw@0: return selector:exec() jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: function User.object_get:name_with_login() jbe/bsw@0: return self.name .. ' (' .. self.login .. ')' jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: function User.object:require_privilege(privilege) jbe/bsw@0: if privilege == "admin" then jbe/bsw@0: assert(self.admin, "Administrator privilege required") jbe/bsw@0: elseif privilege == "write" then jbe/bsw@0: assert(self.write_priv, "Write privilege required") jbe/bsw@0: else jbe/bsw@0: error("Unknown privilege passed to require_privilege method of User") jbe/bsw@0: end jbe/bsw@0: end