Sha256: 9460861f5b036503a105e03376951f2e26417dc4093c91a97e2ea4de6c58e810

Contents?: true

Size: 1.45 KB

Versions: 19

Compression:

Stored size: 1.45 KB

Contents

module RailsBase::Authentication
  class SingleSignOnCreate < RailsBase::ServiceBase
    delegate :user, to: :context
    delegate :token_length, to: :context
    delegate :uses, to: :context
    delegate :expires_at, to: :context
    delegate :reason, to: :context
    delegate :token_type, to: :context
    delegate :url_redirect, to: :context

    def call
      msg = "Creating SSO token [#{reason}]: user_id:#{user.id}; "\
        "uses:#{uses.nil? ? 'unlimited' : uses}; expires_at:#{expires_at}"
      log(level: :info, msg: msg)
      context.data = create_sso_token
    end

    def create_sso_token
      params = {
        user: user,
        max_use: uses,
        data_use: data_type,
        expires_at: expires_at,
        reason: reason,
        length: token_length,
        extra: url_redirect,
      }.compact
      ShortLivedData.create_data_key(**params)
    end

    def data_type
      ShortLivedData::VALID_DATA_USE_LENGTH.include?(token_type&.to_sym) ? token_type.to_sym : nil
    end

    def validate!
      raise "Expected user to be a User. Received #{user.class}" unless user.is_a? User
      raise "Expected token_length to be a Int. Received #{token_length.class}" unless token_length.is_a? Integer
      raise "Expected reason to be present." if reason.nil?

      time_class = ActiveSupport::TimeWithZone
      raise "Expected expires_at to be a Received #{time_class}. Received #{expires_at.class}" unless expires_at.is_a? time_class
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
rails_base-0.82.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.81.1 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.81.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.80.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.75.6 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.75.5 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.75.4 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.75.3 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.75.2 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.75.1 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.75.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.74.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.73.1 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.73.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.72.1 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.72.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.71.0 app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.70.1.pre app/services/rails_base/authentication/single_sign_on_create.rb
rails_base-0.70.0 app/services/rails_base/authentication/single_sign_on_create.rb