authorizme 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.0.4
2
+
3
+ ### Features & Enhancements
4
+
5
+ * Add synchronize requests table and methods to user for synchronize requests
6
+ * Remove on_user_already_exist method from controller
7
+
1
8
  ## 0.0.3
2
9
 
3
10
  ### Features & Enhancements
data/README.md CHANGED
@@ -44,6 +44,10 @@ Also you can set roles. Just add some roles in Role model and then set it to use
44
44
 
45
45
  ### Advanced usage
46
46
 
47
+ #### Synchronize
48
+
49
+ You can sync your accounts. If user login with another provider on existing user session, then plugin will set synchronize request. You can call `has_synchronize_request?` and check if there's any new request. Then you can call 'synchronize(user)' to user model.
50
+
47
51
  #### Custom provider callback view
48
52
 
49
53
  By default providers use callback view which require JQuery and require `eventBus` in `window` dom element:
@@ -1,8 +1,10 @@
1
1
  module Authorizme
2
2
  class AuthorizmeController < ::ApplicationController
3
3
  respond_to :html, :json, :xml
4
+ layout "authorizme/layouts/popup"
4
5
 
5
6
  def index
7
+ @user = current_user
6
8
  end
7
9
 
8
10
  protected
@@ -33,8 +35,5 @@ module Authorizme
33
35
  "http://#{request.host}/#{Authorizme::namespace}/login/#{provider}/callback"
34
36
  end
35
37
  end
36
-
37
- def another_user_logged_in user
38
- end
39
38
  end
40
39
  end
@@ -0,0 +1,14 @@
1
+ module Authorizme
2
+ class SynchronizeRequest < ActiveRecord::Base
3
+ belongs_to :user
4
+ belongs_to :requested_user, :class_name => "User"
5
+
6
+ default_scope :joins => :requested_user
7
+
8
+ scope :status_new, where(:status => "new")
9
+
10
+ def as_json
11
+ {id: self.id, status: self.status, requested_user: self.requested_user, created_at: self.created_at}
12
+ end
13
+ end
14
+ end
@@ -1,6 +1,22 @@
1
1
  <h2>Authorizme plugin for authorization</h2>
2
2
  <div>Authorizme version <%= Authorizme::VERSION %></div>
3
3
 
4
+ <% if @user %>
5
+ <h3>Current user <%= @user %></h3>
6
+
7
+ <% if @user.has_synchronize_request? %>
8
+ <b>Synchronize Requests</b>
9
+ <% @user.synchronize_requests.each do |sync_request| %>
10
+ <div>User: <%= sync_request.requested_user %></div>
11
+ <% end %>
12
+ <% end %>
13
+
14
+ <div><a href="<%= "/#{Authorizme::namespace}/logout" %>">Logout</a></div>
15
+
16
+ <% end %>
17
+
18
+
19
+
4
20
  <h3>Authorize with your credentials:</h3>
5
21
  <%= form_tag "/#{Authorizme::namespace}/sessions" do %>
6
22
  <p>
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Authorization completed</title>
5
+ <%= javascript_include_tag "jquery" %>
6
+ <%= csrf_meta_tags %>
7
+ </head>
8
+ <body>
9
+ <%= yield %>
10
+ </body>
11
+ </html>
@@ -15,6 +15,7 @@ module Authorizme
15
15
  belongs_to :role, :class_name => "Authorizme::UserRole", :foreign_key => "user_role_id"
16
16
  belongs_to :origin_provider, :class_name => "Authorizme::UserProvider"
17
17
  has_many :providers, :class_name => "Authorizme::UserProvider"
18
+ has_many :synchronize_requests, :class_name => "Authorizme::SynchronizeRequest"
18
19
 
19
20
  attr_reader :password
20
21
  attr_accessible :first_name, :last_name, :image_url, :email, :password, :password_confirmation
@@ -28,6 +29,8 @@ module Authorizme
28
29
  # Filters
29
30
  before_create :set_default_role
30
31
 
32
+ scope :with_role, joins(:role)
33
+
31
34
  include InstanceMethodsOnActivation
32
35
 
33
36
  if respond_to?(:attributes_protected_by_default)
@@ -109,6 +112,10 @@ module Authorizme
109
112
  def has_not_provider?
110
113
  !self.has_provider
111
114
  end
115
+
116
+ def has_synchronize_request?
117
+ self.synchronize_requests.status_new.any?
118
+ end
112
119
 
113
120
  def synchronize other_user
114
121
  other_user.providers.each do |other_provider|
@@ -116,6 +123,10 @@ module Authorizme
116
123
  end
117
124
  on_synchronized other_user
118
125
  end
126
+
127
+ def to_s
128
+ "#{self.first_name} #{self.last_name}"
129
+ end
119
130
 
120
131
  private
121
132
 
@@ -18,7 +18,7 @@ module Authorizme
18
18
 
19
19
  def login user
20
20
  if current_user
21
- another_user_logged_in user
21
+ SynchronizeRequest.create!({user: current_user, requested_user: user})
22
22
  else
23
23
  session[:user_id] = user.id
24
24
  end
@@ -1,3 +1,3 @@
1
1
  module Authorizme
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,13 @@
1
+ class CreateSynchronizeRequests < ActiveRecord::Migration
2
+ def change
3
+ create_table :synchronize_requests do |t|
4
+ t.references :user
5
+ t.integer :requested_user_id
6
+ t.string :status, :null => false, :default => "new"
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authorizme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-04-04 00:00:00.000000000 Z
13
+ date: 2012-04-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
17
- requirement: &70223193870600 !ruby/object:Gem::Requirement
17
+ requirement: &81754760 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *70223193870600
25
+ version_requirements: *81754760
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec
28
- requirement: &70223193870000 !ruby/object:Gem::Requirement
28
+ requirement: &81754550 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70223193870000
36
+ version_requirements: *81754550
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec-rails
39
- requirement: &70223193869460 !ruby/object:Gem::Requirement
39
+ requirement: &81754340 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70223193869460
47
+ version_requirements: *81754340
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: webrat
50
- requirement: &70223193868900 !ruby/object:Gem::Requirement
50
+ requirement: &81754130 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70223193868900
58
+ version_requirements: *81754130
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: capybara
61
- requirement: &70223193868400 !ruby/object:Gem::Requirement
61
+ requirement: &81753920 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70223193868400
69
+ version_requirements: *81753920
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: factory_girl_rails
72
- requirement: &70223193867880 !ruby/object:Gem::Requirement
72
+ requirement: &81753710 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70223193867880
80
+ version_requirements: *81753710
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activesupport
83
- requirement: &70223193867340 !ruby/object:Gem::Requirement
83
+ requirement: &81753500 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *70223193867340
91
+ version_requirements: *81753500
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rails
94
- requirement: &70223193866840 !ruby/object:Gem::Requirement
94
+ requirement: &81753290 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *70223193866840
102
+ version_requirements: *81753290
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: bcrypt-ruby
105
- requirement: &70223193866360 !ruby/object:Gem::Requirement
105
+ requirement: &81753080 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *70223193866360
113
+ version_requirements: *81753080
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: json
116
- requirement: &70223193865800 !ruby/object:Gem::Requirement
116
+ requirement: &81752870 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: '0'
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *70223193865800
124
+ version_requirements: *81752870
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: twitter_oauth
127
- requirement: &70223193865140 !ruby/object:Gem::Requirement
127
+ requirement: &81752660 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ! '>='
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: '0'
133
133
  type: :runtime
134
134
  prerelease: false
135
- version_requirements: *70223193865140
135
+ version_requirements: *81752660
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: twitter
138
- requirement: &70223193864480 !ruby/object:Gem::Requirement
138
+ requirement: &81752450 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ! '>='
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: '0'
144
144
  type: :runtime
145
145
  prerelease: false
146
- version_requirements: *70223193864480
146
+ version_requirements: *81752450
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: oauth2
149
- requirement: &70223193863440 !ruby/object:Gem::Requirement
149
+ requirement: &81752240 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ! '>='
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: '0'
155
155
  type: :runtime
156
156
  prerelease: false
157
- version_requirements: *70223193863440
157
+ version_requirements: *81752240
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: fbgraph
160
- requirement: &70223193862900 !ruby/object:Gem::Requirement
160
+ requirement: &81752030 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ! '>='
@@ -165,7 +165,7 @@ dependencies:
165
165
  version: '0'
166
166
  type: :runtime
167
167
  prerelease: false
168
- version_requirements: *70223193862900
168
+ version_requirements: *81752030
169
169
  description: Authorization that includes basic authorization and 3 social authorization
170
170
  with Latvia social network draugiem.lv, facebook.com and twitter.com.
171
171
  email:
@@ -189,10 +189,12 @@ files:
189
189
  - app/controllers/authorizme/login/twitter_controller.rb
190
190
  - app/controllers/authorizme/sessions_controller.rb
191
191
  - app/controllers/authorizme/users_controller.rb
192
+ - app/models/authorizme/synchronize_request.rb
192
193
  - app/models/authorizme/user_provider.rb
193
194
  - app/models/authorizme/user_role.rb
194
195
  - app/views/authorizme/authorizme/index.html.erb
195
196
  - app/views/authorizme/authorizme/popup.html.erb
197
+ - app/views/authorizme/layouts/authorizme.html.erb
196
198
  - app/views/authorizme/layouts/popup.html.erb
197
199
  - app/views/authorizme/users/new.html.erb
198
200
  - authorizme.gemspec
@@ -214,6 +216,7 @@ files:
214
216
  - lib/generators/authorizme/templates/migrations/1_create_users.rb
215
217
  - lib/generators/authorizme/templates/migrations/2_create_user_providers.rb
216
218
  - lib/generators/authorizme/templates/migrations/3_create_user_roles.rb
219
+ - lib/generators/authorizme/templates/migrations/4_create_synchronize_requests.rb
217
220
  - lib/generators/authorizme/templates/models/user.rb
218
221
  - spec/.DS_Store
219
222
  - spec/authorizme/providers/draugiem_spec.rb
@@ -245,8 +248,4 @@ signing_key:
245
248
  specification_version: 3
246
249
  summary: ! 'Simple authorization gem for basic and Oauth: facebook.com, twitter.com
247
250
  and draugiem.lv'
248
- test_files:
249
- - spec/authorizme/providers/draugiem_spec.rb
250
- - spec/authorizme_spec.rb
251
- - spec/factories.rb
252
- - spec/spec_helper.rb
251
+ test_files: []