annotate demo-app/model/user.lua @ 16:944642a3e488
New set_cookie functions; Added inline documentation; Make set_allowed_json_request_slots work in interactive shell
 | author | 
 jbe/bsw | 
 | date | 
 Thu Mar 25 17:37:03 2010 +0100 (2010-03-25) | 
 | parents | 
 9fdfb27f8e67  | 
 | children | 
  | 
 
 | rev | 
   line source | 
| 
jbe/bsw@0
 | 
     1 User = mondelefant.new_class()
 | 
| 
jbe/bsw@0
 | 
     2 User.table = 'user'
 | 
| 
jbe/bsw@0
 | 
     3 
 | 
| 
jbe/bsw@0
 | 
     4 User:add_reference{
 | 
| 
jbe/bsw@0
 | 
     5   mode          = '1m',        -- one (1) user can have many (m) sessions
 | 
| 
jbe/bsw@0
 | 
     6   to            = "Session",   -- referenced model (quoting avoids auto-loading here)
 | 
| 
jbe/bsw@0
 | 
     7   this_key      = 'id',        -- own key in user table
 | 
| 
jbe/bsw@0
 | 
     8   that_key      = 'user_id',   -- other key in session table
 | 
| 
jbe/bsw@0
 | 
     9   ref           = 'sessions',  -- name of reference
 | 
| 
jbe/bsw@0
 | 
    10   back_ref      = 'user',      -- each autoloaded Session automatically refers back to the User
 | 
| 
jbe/bsw@0
 | 
    11   default_order = '"ident"'    -- order sessions by SQL expression "ident"
 | 
| 
jbe/bsw@0
 | 
    12 }
 | 
| 
jbe/bsw@0
 | 
    13 
 | 
| 
jbe/bsw@0
 | 
    14 function User:by_ident_and_password(ident, password)
 | 
| 
jbe/bsw@0
 | 
    15   local selector = self:new_selector()
 | 
| 
jbe/bsw@0
 | 
    16   selector:add_where{ 'ident = ? AND password = ?', ident, password }
 | 
| 
jbe/bsw@0
 | 
    17   selector:optional_object_mode()
 | 
| 
jbe/bsw@0
 | 
    18   return selector:exec()
 | 
| 
jbe/bsw@0
 | 
    19 end
 | 
| 
jbe/bsw@0
 | 
    20 
 | 
| 
jbe/bsw@0
 | 
    21 function User.object_get:name_with_login()
 | 
| 
jbe/bsw@0
 | 
    22   return self.name .. ' (' .. self.login .. ')'
 | 
| 
jbe/bsw@0
 | 
    23 end
 | 
| 
jbe/bsw@0
 | 
    24 
 | 
| 
jbe/bsw@0
 | 
    25 function User.object:require_privilege(privilege)
 | 
| 
jbe/bsw@0
 | 
    26   if privilege == "admin" then
 | 
| 
jbe/bsw@0
 | 
    27     assert(self.admin, "Administrator privilege required")
 | 
| 
jbe/bsw@0
 | 
    28   elseif privilege == "write" then
 | 
| 
jbe/bsw@0
 | 
    29     assert(self.write_priv, "Write privilege required")
 | 
| 
jbe/bsw@0
 | 
    30   else
 | 
| 
jbe/bsw@0
 | 
    31     error("Unknown privilege passed to require_privilege method of User")
 | 
| 
jbe/bsw@0
 | 
    32   end
 | 
| 
jbe/bsw@0
 | 
    33 end
 |