authlogic_vkontakte 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Manifest CHANGED
@@ -2,10 +2,12 @@ README.rdoc
2
2
  Rakefile
3
3
  authlogic_vkontakte.gemspec
4
4
  init.rb
5
- js/vkontakte.js
6
5
  lib/profile_loader.rb
7
6
  lib/settings.rb
8
7
  lib/tasks/vkontakte.rake
9
8
  lib/vkontakte_authentication.rb
10
9
  lib/vkontakte_helper.rb
10
+ resources/vkontakte.js
11
+ resources/xd_receiver.html
12
+ vkontakte.yml
11
13
  Manifest
@@ -1,6 +1,6 @@
1
1
  Bind vkontakte authentication to your authlogic project.
2
2
  == Install
3
- gem install authlogic_vkontakte
3
+ script/plugin install authlogic_vkontakte
4
4
 
5
5
  == Setup
6
6
  Run rake task to init resources (javascripts and other)
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
2
2
  require "rake"
3
3
  require "echoe"
4
4
 
5
- Echoe.new("authlogic_vkontakte", "0.1.0") do |p|
5
+ Echoe.new("authlogic_vkontakte", "0.1.1") do |p|
6
6
  p.description= "Bind vkontakte authentication to your authlogic project"
7
7
  p.url= "http://github.com/GarPit/authlogic_vkontakte"
8
8
  p.author= "Igor Petrov"
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{authlogic_vkontakte}
5
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Igor Petrov"]
9
- s.date = %q{2010-10-15}
9
+ s.date = %q{2010-11-17}
10
10
  s.description = %q{Bind vkontakte authentication to your authlogic project}
11
11
  s.email = %q{garik.piton@gmail.com}
12
12
  s.extra_rdoc_files = ["README.rdoc", "lib/profile_loader.rb", "lib/settings.rb", "lib/tasks/vkontakte.rake", "lib/vkontakte_authentication.rb", "lib/vkontakte_helper.rb"]
13
- s.files = ["README.rdoc", "Rakefile", "authlogic_vkontakte.gemspec", "init.rb", "js/vkontakte.js", "lib/profile_loader.rb", "lib/settings.rb", "lib/tasks/vkontakte.rake", "lib/vkontakte_authentication.rb", "lib/vkontakte_helper.rb", "Manifest"]
13
+ s.files = ["README.rdoc", "Rakefile", "authlogic_vkontakte.gemspec", "init.rb", "lib/profile_loader.rb", "lib/settings.rb", "lib/tasks/vkontakte.rake", "lib/vkontakte_authentication.rb", "lib/vkontakte_helper.rb", "resources/vkontakte.js", "resources/xd_receiver.html", "vkontakte.yml", "Manifest"]
14
14
  s.homepage = %q{http://github.com/GarPit/authlogic_vkontakte}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Authlogic_vkontakte", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
@@ -1,6 +1,6 @@
1
1
  namespace :vkontakte do
2
2
  desc "Init resources for plugin"
3
- task :init => [:yml, :javascripts]
3
+ task :init => [:yml, :resources]
4
4
 
5
5
  desc "Copy vkontakte.yml to current rails application"
6
6
  task :yml do
@@ -11,12 +11,14 @@ namespace :vkontakte do
11
11
  puts "vkontakte.yml copied successfully!"
12
12
  end
13
13
 
14
- desc "Copy javascript to current rails application"
15
- task :javascripts do
16
- puts "Copying javascript files..."
14
+ desc "Copy resources to current rails application"
15
+ task :resources do
16
+ puts "Copying resources files..."
17
17
  project_dir = RAILS_ROOT + '/public/javascripts/'
18
- scripts = Dir[File.join(File.dirname(__FILE__), '..', '..', '/js/', '*.js')]
18
+ scripts = Dir[File.join(File.dirname(__FILE__), '..', '..', '/resources/', '*.js')]
19
+ htmls = Dir[File.join(File.dirname(__FILE__), '..', '..', '/resources/', '*.html')]
19
20
  FileUtils.cp(scripts, project_dir)
21
+ FileUtils.cp(htmls, RAILS_ROOT + '/public/')
20
22
  puts "Files copied successfully!"
21
23
  end
22
24
  end
@@ -1,94 +1,94 @@
1
- require "profile_loader"
2
- require "settings"
3
- require "md5"
4
-
5
- module VkontakteAuthentication
6
-
7
- class NotInitializedError < StandardError;
8
- end
9
-
10
- module ClassMethods
11
- include Settings
12
-
13
- def find_by_vk_id_method(value = nil)
14
- rw_config(:find_by_vk_id_method, value, "find_by_vk_id")
15
- end
16
- alias_method :find_by_vk_id_method=, :find_by_vk_id_method
17
-
18
- def vk_id_field(value = nil)
19
- rw_config(:vk_id_field, value, :vk_id)
20
- end
21
- alias_method :vk_id_field=, :vk_id_field
22
-
23
- def vkontakte_authentication
24
- raise(NotInitializedError, "create and initialize vkontakte.yml") unless profile_loader.vkontakte_yml_defined? && vk_app_id && vk_app_password
25
- end
26
-
27
- end
28
-
29
- module InstanceMethods
30
-
31
- private
32
-
33
- def credentials=(value)
34
- super
35
- cookies = value.is_a?(Array) ? value.first : value
36
- if cookies.is_a?(ActionController::CookieJar) && cookies[vk_app_cookie]
37
- @vk_cookies = CGI::parse(cookies[vk_app_cookie])
38
- end
39
- end
40
-
41
- def authenticating_with_vkontakte?
42
- @vk_cookies
43
- end
44
-
45
- def validate_by_vk_cookie
46
- result = "expire=%smid=%ssecret=%ssid=%s%s" % [@vk_cookies['expire'], @vk_cookies['mid'], @vk_cookies['secret'], @vk_cookies['sid'], self.class.vk_app_password]
47
- if MD5.md5(result).to_s == @vk_cookies['sig'].to_s
48
- raise(NotInitializedError, "you must define vk_id column in your User model") unless record_class.respond_to? find_by_vk_id_method
49
- mid_cookie = @vk_cookies['mid'].first
50
- possible_record = search_for_record(find_by_vk_id_method, mid_cookie)
51
- if possible_record.nil?
52
- possible_record = record_class.new(vk_id_field => mid_cookie)
53
- possible_record.send :persistence_token=, Authlogic::Random.hex_token if possible_record.respond_to? :persistence_token=
54
- possible_record.send :save, false
55
- end
56
- self.attempted_record = possible_record
57
- end
58
- end
59
-
60
- def vk_app_cookie
61
- self.class.vk_app_cookie
62
- end
63
-
64
- def find_by_vk_id_method
65
- self.class.find_by_vk_id_method
66
- end
67
-
68
- def vk_id_field
69
- self.class.vk_id_field
70
- end
71
-
72
- def record_class
73
- self.class.klass
74
- end
75
-
76
- def destroy_vkontakte_cookies
77
- controller.cookies.delete vk_app_cookie
78
- end
79
- end
80
-
81
-
82
- end
83
-
84
- ActiveRecord::Base.class_eval do
85
- extend VkontakteAuthentication::ClassMethods
86
- attr_accessible vk_id_field
87
- end
88
-
89
- Authlogic::Session::Base.class_eval do
90
- include VkontakteAuthentication::InstanceMethods
91
- extend VkontakteAuthentication::ClassMethods
92
- after_destroy :destroy_vkontakte_cookies
93
- validate :validate_by_vk_cookie, :if => :authenticating_with_vkontakte?
94
- end
1
+ require "profile_loader"
2
+ require "settings"
3
+ require "md5"
4
+
5
+ module VkontakteAuthentication
6
+
7
+ class NotInitializedError < StandardError;
8
+ end
9
+
10
+ module ClassMethods
11
+ include Settings
12
+
13
+ def find_by_vk_id_method(value = nil)
14
+ rw_config(:find_by_vk_id_method, value, "find_by_vk_id")
15
+ end
16
+ alias_method :find_by_vk_id_method=, :find_by_vk_id_method
17
+
18
+ def vk_id_field(value = nil)
19
+ rw_config(:vk_id_field, value, :vk_id)
20
+ end
21
+ alias_method :vk_id_field=, :vk_id_field
22
+
23
+ def vkontakte_authentication
24
+ raise(NotInitializedError, "create and initialize vkontakte.yml") unless profile_loader.vkontakte_yml_defined? && vk_app_id && vk_app_password
25
+ end
26
+
27
+ end
28
+
29
+ module InstanceMethods
30
+
31
+ private
32
+
33
+ def credentials=(value)
34
+ super
35
+ cookies = value.is_a?(Array) ? value.first : value
36
+ if cookies && cookies[vk_app_cookie]
37
+ @vk_cookies = CGI::parse(cookies[vk_app_cookie])
38
+ end
39
+ end
40
+
41
+ def authenticating_with_vkontakte?
42
+ @vk_cookies
43
+ end
44
+
45
+ def validate_by_vk_cookie
46
+ result = "expire=%smid=%ssecret=%ssid=%s%s" % [@vk_cookies['expire'], @vk_cookies['mid'], @vk_cookies['secret'], @vk_cookies['sid'], self.class.vk_app_password]
47
+ if MD5.md5(result).to_s == @vk_cookies['sig'].to_s
48
+ raise(NotInitializedError, "you must define vk_id column in your User model") unless record_class.respond_to? find_by_vk_id_method
49
+ mid_cookie = @vk_cookies['mid'].first
50
+ possible_record = search_for_record(find_by_vk_id_method, mid_cookie)
51
+ if possible_record.nil?
52
+ possible_record = record_class.new
53
+ possible_record.send "#{vk_id_field}=", mid_cookie
54
+ possible_record.send :persistence_token=, Authlogic::Random.hex_token if possible_record.respond_to? :persistence_token=
55
+ possible_record.send :save, false
56
+ end
57
+ self.attempted_record = possible_record
58
+ end
59
+ end
60
+
61
+ def vk_app_cookie
62
+ self.class.vk_app_cookie
63
+ end
64
+
65
+ def find_by_vk_id_method
66
+ self.class.find_by_vk_id_method
67
+ end
68
+
69
+ def vk_id_field
70
+ self.class.vk_id_field
71
+ end
72
+
73
+ def record_class
74
+ self.class.klass
75
+ end
76
+
77
+ def destroy_vkontakte_cookies
78
+ controller.cookies.delete vk_app_cookie
79
+ end
80
+ end
81
+
82
+
83
+ end
84
+
85
+ ActiveRecord::Base.class_eval do
86
+ extend VkontakteAuthentication::ClassMethods
87
+ end
88
+
89
+ Authlogic::Session::Base.class_eval do
90
+ include VkontakteAuthentication::InstanceMethods
91
+ extend VkontakteAuthentication::ClassMethods
92
+ after_destroy :destroy_vkontakte_cookies
93
+ validate :validate_by_vk_cookie, :if => :authenticating_with_vkontakte?
94
+ end
File without changes
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <title>Open API XD Receiver</title>
6
+ </head>
7
+ <body>
8
+ <script src="http://vkontakte.ru/js/api/xd_receiver.js" type="text/javascript"></script>
9
+ </body>
10
+ </html>
@@ -0,0 +1,2 @@
1
+ vk_app_id: <YOUR_APP_ID>
2
+ vk_app_password: <YOUR_PASSWORD>
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authlogic_vkontakte
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Igor Petrov
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-15 00:00:00 +04:00
18
+ date: 2010-11-17 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -37,12 +37,14 @@ files:
37
37
  - Rakefile
38
38
  - authlogic_vkontakte.gemspec
39
39
  - init.rb
40
- - js/vkontakte.js
41
40
  - lib/profile_loader.rb
42
41
  - lib/settings.rb
43
42
  - lib/tasks/vkontakte.rake
44
43
  - lib/vkontakte_authentication.rb
45
44
  - lib/vkontakte_helper.rb
45
+ - resources/vkontakte.js
46
+ - resources/xd_receiver.html
47
+ - vkontakte.yml
46
48
  - Manifest
47
49
  has_rdoc: true
48
50
  homepage: http://github.com/GarPit/authlogic_vkontakte