Class: OpenSesame::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/open_sesame/configuration.rb

Constant Summary collapse

CONFIGURABLE_ATTRIBUTES =
[
  :organization_name,
  :mount_prefix,
  :github_application,
  :enabled,
  :debug,
  :full_host,
  :auto_access_provider
]

Instance Method Summary collapse

Instance Method Details

#auto_login(provider) ⇒ Object



37
38
39
# File 'lib/open_sesame/configuration.rb', line 37

def (provider)
  self.auto_access_provider = provider
end

#configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



61
62
63
64
65
# File 'lib/open_sesame/configuration.rb', line 61

def configure
  yield self
  validate!
  self
end

#configured?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/open_sesame/configuration.rb', line 74

def configured?
  [:organization_name, :mount_prefix, :github_application].any? { |required| send(required).present? }
end

#debug?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/open_sesame/configuration.rb', line 57

def debug?
  !!self.debug
end

#disable!Object



45
46
47
# File 'lib/open_sesame/configuration.rb', line 45

def disable!
  self.enabled = false
end

#enable(enabled) ⇒ Object



49
50
51
# File 'lib/open_sesame/configuration.rb', line 49

def enable(enabled)
  self.enabled = !!enabled
end

#enable!Object



41
42
43
# File 'lib/open_sesame/configuration.rb', line 41

def enable!
  self.enabled = true
end

#enabled?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/open_sesame/configuration.rb', line 53

def enabled?
  !!self.enabled
end

#github(client_id, client_secret) ⇒ Object



25
26
27
# File 'lib/open_sesame/configuration.rb', line 25

def github(client_id, client_secret)
  self.github_application = { :client_id => client_id, :client_secret => client_secret }
end

#github_access_token(access_token) ⇒ Object



29
30
31
# File 'lib/open_sesame/configuration.rb', line 29

def github_access_token(access_token)
  self.github_application = { :access_token => access_token }
end

#host(full_host) ⇒ Object



21
22
23
# File 'lib/open_sesame/configuration.rb', line 21

def host(full_host)
  self.full_host = full_host
end

#mounted_at(mount_prefix) ⇒ Object



17
18
19
# File 'lib/open_sesame/configuration.rb', line 17

def mounted_at(mount_prefix)
  self.mount_prefix = mount_prefix
end

#organization(organization_name) ⇒ Object



33
34
35
# File 'lib/open_sesame/configuration.rb', line 33

def organization(organization_name)
  self.organization_name = organization_name
end

#valid?Boolean

Returns:

  • (Boolean)


67
68
69
70
71
72
# File 'lib/open_sesame/configuration.rb', line 67

def valid?
  self.organization_name && self.organization_name.is_a?(String) &&
  self.mount_prefix && self.mount_prefix.is_a?(String) &&
  self.github_application.is_a?(Hash) &&
  [:client_id, :client_secret].all? { |key| self.github_application.keys.include?(key) }
end

#validate!Object

Raises:



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/open_sesame/configuration.rb', line 78

def validate!
  return true if valid?
  message = <<-MESSAGE

  Update your OpenSesame configuration. Example:

  # config/initializers/open_sesame.rb
  OpenSesame.configure do |config|
    config.organization 'challengepost'
    config.mounted_at   '/opensesame'
    config.github       ENV['GITHUB_APP_ID'], ENV['GITHUB_SECRET']
  end

  When you register the app, make sure to point the callback url to
  the engine mountpoint + /auth/github/callback. For example, if your
  development app is on http://localhost:3000 and you're mounting
  the OpenSesame::Engine at '/opensesame', your github
  callback url should be:

  http://localhost:3000/auth/github/callback

  MESSAGE

  raise ConfigurationError.new(message)
end