account.cr 777 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. require_relative "../sitef.rb"
  2. require_relative "../serdes.rb"
  3. require_relative "../monolog.rb"
  4. require_relative "../security.rb"
  5. module Woe
  6. class Account
  7. include Serdes
  8. include Monolog
  9. serdes_reader :id
  10. serdes_reader :pass
  11. serdes_reader :algo
  12. serdes_reader :email
  13. serdes_accessor :woe_points
  14. def inspect
  15. "Account #{@id} #{@pass} #{algo}"
  16. end
  17. def password=(pass)
  18. @algo = "crypt"
  19. @pass = crypt(pass)
  20. end
  21. # Returns true if the password matches that of this account or false if not.
  22. def challenge?(trypass)
  23. if algo == "plain"
  24. return @pass == trypass
  25. elsif algo == "crypt"
  26. return crypt_challenge?(trypass, @pass)
  27. else
  28. return false
  29. end
  30. end
  31. end # class Account
  32. end # module Woe