liquid_feedback_frontend

annotate model/session.lua @ 827:23a27e7638ce

Added tag translate for changeset 4650714de50b
author bsw
date Sun Jul 08 14:32:14 2012 +0200 (2012-07-08)
parents ea2449916c12
children 58f48a8a202a
rev   line source
bsw/jbe@0 1 Session = mondelefant.new_class()
bsw/jbe@0 2 Session.table = 'session'
bsw/jbe@0 3 Session.primary_key = { 'ident' }
bsw/jbe@0 4
bsw/jbe@0 5 Session:add_reference{
bsw/jbe@0 6 mode = 'm1',
bsw/jbe@0 7 to = "Member",
bsw/jbe@0 8 this_key = 'member_id',
bsw/jbe@0 9 that_key = 'id',
bsw/jbe@0 10 ref = 'member',
bsw/jbe@0 11 }
bsw/jbe@0 12
bsw/jbe@0 13 local function random_string()
bsw/jbe@0 14 return multirand.string(
bsw/jbe@0 15 32,
bsw/jbe@0 16 '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
bsw/jbe@0 17 )
bsw/jbe@0 18 end
bsw/jbe@0 19
bsw/jbe@0 20 function Session:new()
bsw/jbe@0 21 local session = self.prototype.new(self) -- super call
bsw/jbe@0 22 session.ident = random_string()
bsw/jbe@0 23 session.additional_secret = random_string()
bsw/jbe@0 24 session:save()
bsw/jbe@0 25 return session
bsw/jbe@0 26 end
bsw/jbe@0 27
bsw/jbe@0 28 function Session:by_ident(ident)
bsw/jbe@0 29 local selector = self:new_selector()
bsw/jbe@0 30 selector:add_where{ 'ident = ?', ident }
bsw/jbe@0 31 selector:optional_object_mode()
bsw/jbe@0 32 return selector:exec()
bsw/jbe@0 33 end
bsw@813 34
bsw@813 35 function Session.object:has_access(level)
bsw@813 36 if level == "member" then
bsw@813 37 if app.session.member_id then
bsw@813 38 return true
bsw@813 39 else
bsw@813 40 return false
bsw@813 41 end
bsw@813 42
bsw@813 43 elseif level == "everything" then
bsw@813 44 if self:has_access("member") or config.public_access == "everything" then
bsw@813 45 return true
bsw@813 46 else
bsw@813 47 return false
bsw@813 48 end
bsw@813 49
bsw@813 50 elseif level == "all_pseudonymous" then
bsw@813 51 if self:has_access("everything") or config.public_access == "all_pseudonymous" then
bsw@813 52 return true
bsw@813 53 else
bsw@813 54 return false
bsw@813 55 end
bsw@813 56
bsw@813 57 elseif level == "authors_pseudonymous" then
bsw@813 58 if self:has_access("all_pseudonymous") or config.public_access == "authors_pseudonymous" then
bsw@813 59 return true
bsw@813 60 else
bsw@813 61 return false
bsw@813 62 end
bsw@813 63
bsw@813 64 elseif level == "anonymous" then
bsw@813 65 if self:has_access("authors_pseudonymous") or config.public_access == "anonymous" then
bsw@813 66 return true
bsw@813 67 else
bsw@813 68 return false
bsw@813 69 end
bsw@813 70
bsw@813 71 end
bsw@813 72
bsw@813 73 error("invalid access level")
bsw@813 74 end

Impressum / About Us