class Anoubis::Sso::Server::System < Anoubis::Core::ApplicationRecord self.table_name = 'systems' before_validation :before_validation_anoubis_sso_server_system_on_create, on: :create after_save :after_save_anoubis_sso_server_system after_destroy :after_destroy_anoubis_sso_server_system #VALID_HTTP_REGEX = /\A(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?\Z/i validates :title, presence: true, length: { maximum: 100 } validates :host, presence: true, length: { maximum: 200 }#, format: { with: VALID_HTTP_REGEX } validates :uuid, presence: true, length: { maximum: 40 }, uniqueness: { case_sensitive: true } enum status: { enabled: 0, disabled: 1 } def before_validation_anoubis_sso_server_system_on_create self.uuid = SecureRandom.uuid unless self.uuid self.secret_key = SecureRandom.uuid unless self.secret_key end def after_save_anoubis_sso_server_system if self.status == 'enabled' self.redis.set self.redis_cache_name, { host: self.host, secret_key: self.secret_key, callback: self.callback, silent: self.silent }.to_json else self.after_destroy_system end end def after_destroy_anubis_sso_server_system self.redis.del self.redis_cache_name end def redis_cache_name self.redis_prefix + 'system:' + self.uuid end end