fb_app_plugin.rb
2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
module FbAppPlugin
extend Noosfero::Plugin::ParentMethods
def self.plugin_name
I18n.t 'fb_app_plugin.lib.plugin.name'
end
def self.plugin_description
I18n.t 'fb_app_plugin.lib.plugin.description'
end
def self.config
@config ||= HashWithIndifferentAccess.new(YAML.load File.read("#{File.dirname __FILE__}/../config.yml")) rescue {}
end
def self.test_users
@test_users ||= self.config[:test_users]
end
def self.test_user? user
user and (self.test_users.blank? or self.test_users.include? user.identifier)
end
def self.debug? actor=nil
self.test_user? actor
end
def self.scope user
if self.test_user? user then 'publish_actions' else '' end
end
def self.oauth_provider_for environment
return unless self.config.present?
@oauth_providers ||= {}
@oauth_providers[environment] ||= begin
app_id = self.timeline_app_credentials[:id].to_s
app_secret = self.timeline_app_credentials[:secret].to_s
client = environment.oauth_providers.where(client_id: app_id).first
# attributes that may be changed by the user
client ||= OauthClientPlugin::Provider.new strategy: 'facebook',
name: 'FB App', site: 'https://facebook.com'
# attributes that should not change
client.attributes = {
client_id: app_id, client_secret: app_secret,
environment_id: environment.id,
}
client.save! if client.changed?
client
end
end
def self.open_graph_config
return unless self.config.present?
@open_graph_config ||= begin
key = if self.config[:timeline][:use_test_app] then :test_app else :app end
self.config[key][:open_graph]
end
end
def self.credentials app = :app
return unless self.config.present?
{id: self.config[app][:id], secret: self.config[app][:secret]}
end
def self.timeline_app_credentials
return unless self.config.present?
@timeline_app_credentials ||= begin
key = if self.config[:timeline][:use_test_app] then :test_app else :app end
self.credentials key
end
end
def self.page_tab_app_credentials
return unless self.config.present?
@page_tab_app_credentials ||= begin
key = if self.config[:page_tab][:use_test_app] then :test_app else :app end
self.credentials key
end
end
end