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,
  :after_login_path,
  :after_logout_path
]

Instance Method Summary collapse

Instance Method Details

#auto_login(provider) ⇒ Object



39
40
41
# File 'lib/open_sesame/configuration.rb', line 39

def (provider)
  self.auto_access_provider = provider
end

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

Yields:

  • (_self)

Yield Parameters:



76
77
78
79
80
# File 'lib/open_sesame/configuration.rb', line 76

def configure
  yield self
  validate!
  self
end

#configured?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/open_sesame/configuration.rb', line 89

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

#debug?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/open_sesame/configuration.rb', line 72

def debug?
  !!self.debug
end

#disable!Object



47
48
49
# File 'lib/open_sesame/configuration.rb', line 47

def disable!
  self.enabled = false
end

#enable(enabled) ⇒ Object



51
52
53
# File 'lib/open_sesame/configuration.rb', line 51

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

#enable!Object



43
44
45
# File 'lib/open_sesame/configuration.rb', line 43

def enable!
  self.enabled = true
end

#enabled?Boolean

Returns:

  • (Boolean)


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

def enabled?
  !!self.enabled
end

#github(client_id, client_secret) ⇒ Object



27
28
29
# File 'lib/open_sesame/configuration.rb', line 27

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

#github_access_token(access_token) ⇒ Object



31
32
33
# File 'lib/open_sesame/configuration.rb', line 31

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

#host(full_host) ⇒ Object



23
24
25
# File 'lib/open_sesame/configuration.rb', line 23

def host(full_host)
  self.full_host = full_host
end

#mounted_at(mount_prefix) ⇒ Object



19
20
21
# File 'lib/open_sesame/configuration.rb', line 19

def mounted_at(mount_prefix)
  self.mount_prefix = mount_prefix
end

#organization(organization_name) ⇒ Object



35
36
37
# File 'lib/open_sesame/configuration.rb', line 35

def organization(organization_name)
  self.organization_name = organization_name
end

#redirect_after_login(to) ⇒ Object



60
61
62
# File 'lib/open_sesame/configuration.rb', line 60

def (to)
  self. = to
end

#redirect_after_logout(to) ⇒ Object



64
65
66
# File 'lib/open_sesame/configuration.rb', line 64

def redirect_after_logout(to)
  self.after_logout_path = to
end

#redirect_to(to) ⇒ Object



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

def redirect_to(to)
  self. = to
  self.after_logout_path = to
end

#valid?Boolean

Returns:

  • (Boolean)


82
83
84
85
86
87
# File 'lib/open_sesame/configuration.rb', line 82

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:



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/open_sesame/configuration.rb', line 93

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