Sha256: 65d9e7d72d36e3b5367e18a4113250b9eb5a52f3eec0cc3a6eb5a49a520d210d
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
require 'digest/md5' require 'securerandom' module Alfa class << self attr_accessor :GROUPS end class GuestUser def self.grants @grants ||= Alfa.GROUPS[:public] end def self.grant?(name) grants.include?(name.to_sym) end def self.groups [] end def self.group?(name) groups.include?(name.to_sym) end def self.logged? false end def [](key) nil end def method_missing(*o) nil end end class User def initialize(object) @object = object end def grants (groups + [:public]).map{|g| Alfa.GROUPS[g] || []}.flatten end def grant?(name) grants.include?(name.to_sym) end # @return Array def groups @object.groups.map{|s| s.to_s.strip.to_sym} end def group?(name) groups.include?(name.to_sym) end def logged? true end def [](key) @object[key] end def method_missing(*o) @object.send(*o) end def self.method_missing(*o) @object.class.send(*o) end end # Prepend this module in User model in your Project # Example: # class User < Sequel::Model(DB::Main[:users]) # prepend Alfa::UserModule # end module UserModule def password=(p) self.salt = SecureRandom.hex(5) self.passhash = Digest::MD5.hexdigest("#{self.salt}#{p}") end def password_valid?(p) self.passhash == Digest::MD5.hexdigest("#{self.salt}#{p}") end def groups=(g) super(Array(g)) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
alfa-0.0.6.pre | lib/alfa/user.rb |