Guest User

Untitled

a guest
Jun 10th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. require 'casserver/authenticators/base'
  2. require 'activeresource'
  3.  
  4. require 'openssl'
  5. require 'digest/sha2'
  6. require 'base64'
  7.  
  8. module TaccEncryption
  9.  
  10. KEY = Digest::SHA256.hexdigest('T4CcUs3R-C3|\|TR41A|_|Th')
  11.  
  12. def self.encrypt(text)
  13. Base64.encode64(aes(:encrypt, KEY, text))
  14. end
  15.  
  16. def self.decrypt(crypted_text)
  17. aes(:decrypt, KEY, Base64.decode64(crypted_text))
  18. end
  19.  
  20. private
  21.  
  22. def self.aes(m,k,t)
  23. (aes = OpenSSL::Cipher::Cipher.new('aes-256-cbc').send(m)).key = Digest::SHA256.digest(k)
  24. aes.update(t) << aes.final
  25. end
  26.  
  27. end
  28.  
  29. class TaccUser < ActiveResource::Base
  30. self.collection_name = 'users'
  31. self.timeout = 5
  32.  
  33. def self.find_by_email(email)
  34. if u = self.find(:all, :params => { :email => email }).first
  35. return self.find(u.id)
  36. else
  37. return nil
  38. end
  39. end
  40.  
  41. def authenticate(password)
  42. begin
  43. return true if self.put(:authenticate, :password => TaccEncryption.encrypt(password))
  44. rescue
  45. return false
  46. end
  47. end
  48.  
  49. end
  50.  
  51. class CASServer::Authenticators::Tacc < CASServer::Authenticators::Base
  52.  
  53. def validate(credentials)
  54. raise CASServer::AuthenticatorError, "Cannot validate credentials because the authenticator hasn't been configured" unless @options
  55.  
  56. TaccUser.site = @options[:site]
  57.  
  58. read_standard_credentials(credentials) # Sets @username and @password
  59.  
  60. @user = TaccUser.find_by_email(@username)
  61. raise CASServer::AuthenticatorError, "User not found" if @user.nil?
  62.  
  63. return @user.authenticate(@password)
  64.  
  65. end
  66. end
Add Comment
Please, Sign In to add comment