restpack_user_service 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/db/migrate/{20130807130942_create_users.rb → 20130807130943_create_users.rb} +1 -1
- data/db/migrate/{20130807130949_create_authentications.rb → 20130807130950_create_authentications.rb} +1 -1
- data/lib/restpack_user_service.rb +1 -1
- data/lib/restpack_user_service/commands/user/get.rb +5 -22
- data/lib/restpack_user_service/commands/user/list.rb +15 -0
- data/lib/restpack_user_service/commands/user/omni_authenticate.rb +39 -25
- data/lib/restpack_user_service/models/authentication.rb +2 -3
- data/lib/restpack_user_service/models/user.rb +2 -2
- data/lib/restpack_user_service/serializers/authentication.rb +11 -0
- data/lib/restpack_user_service/serializers/user.rb +4 -2
- data/lib/restpack_user_service/version.rb +1 -1
- data/restpack_user_service.gemspec +1 -0
- data/spec/commands/user/get_spec.rb +2 -2
- data/spec/commands/user/list_spec.rb +8 -0
- data/spec/commands/user/omni_authenticate_spec.rb +6 -6
- data/spec/factories/authentication_factory.rb +1 -1
- data/spec/factories/user_factory.rb +1 -1
- data/spec/models/authentication_spec.rb +1 -2
- data/spec/models/user_spec.rb +1 -2
- metadata +23 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0c271281a82e716ca91f3f90867b30ddd94d30a
|
4
|
+
data.tar.gz: 0c129e97bebd4f6552aec4fdb2b9f4fb26fc3d10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27c4036f51ca0c80f49252a0946332f45180777534a7a0ec770cc4dc8bdda331ba082da76cb713d1f6a848bb7dc6192a5ffdb3018a18340d0380c9e5bad40309
|
7
|
+
data.tar.gz: 92e5baf3af87b2beb187c22212b5cd30ca43932cd9137b46ce1eac9bce93a376b4b41680fcbedb8b053e844bd9dff8a682ef239d9add77ac9bb8f1cded21245d
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class CreateAuthentications < ActiveRecord::Migration
|
2
2
|
def change
|
3
|
-
create_table :
|
3
|
+
create_table :restpack_user_authentications do |t|
|
4
4
|
t.string :provider, :limit => 128, :null => false
|
5
5
|
t.string :uid, :limit => 1024, :null => false
|
6
6
|
t.json :omniauth, :null => false
|
@@ -1,2 +1,2 @@
|
|
1
1
|
require 'restpack_service'
|
2
|
-
RestPack::Service::Loader.load '
|
2
|
+
RestPack::Service::Loader.load 'restpack_user_service', 'Users'
|
@@ -1,25 +1,8 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
integer :application_id
|
7
|
-
end
|
8
|
-
|
9
|
-
def execute
|
10
|
-
#TODO: GJ: remove the :application_id scope when we can specify custom serializer filters
|
11
|
-
# https://github.com/RestPack/restpack_serializer/issues/42
|
12
|
-
result = Serializers::User.resource(
|
13
|
-
inputs,
|
14
|
-
Models::User.where(application_id: inputs[:application_id])
|
15
|
-
)
|
16
|
-
|
17
|
-
if result[:users].empty?
|
18
|
-
status :not_found
|
19
|
-
else
|
20
|
-
result
|
21
|
-
end
|
22
|
-
end
|
1
|
+
module Commands::Users::User
|
2
|
+
class Get < RestPack::Service::Commands::Get
|
3
|
+
required do
|
4
|
+
integer :id
|
5
|
+
integer :application_id
|
23
6
|
end
|
24
7
|
end
|
25
8
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Commands::Users::User
|
2
|
+
class List < RestPack::Service::Commands::List
|
3
|
+
required do
|
4
|
+
integer :application_id
|
5
|
+
end
|
6
|
+
|
7
|
+
optional do
|
8
|
+
integer :account_id
|
9
|
+
string :email
|
10
|
+
string :include
|
11
|
+
integer :page
|
12
|
+
integer :page_size
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,34 +1,48 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
require 'restpack_service_messaging'
|
2
|
+
|
3
|
+
module Commands::Users::User
|
4
|
+
class OmniAuthenticate < RestPack::Service::Command
|
5
|
+
required do
|
6
|
+
integer :application_id
|
7
|
+
hash :omniauth_response do
|
8
|
+
required do
|
9
|
+
string :provider
|
10
|
+
string :uid
|
11
|
+
hash :info
|
12
12
|
end
|
13
13
|
end
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
optional do
|
17
|
+
integer :user_id
|
18
|
+
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
def execute
|
21
|
+
user = Models::Users::User.authenticate(
|
22
|
+
user_id,
|
23
|
+
application_id,
|
24
|
+
raw_inputs[:omniauth_response]
|
25
|
+
)
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
if user
|
28
|
+
record_activity(user, inputs)
|
29
|
+
return Serializers::Users::User.resource(user)
|
30
|
+
else
|
31
|
+
status :unauthorized
|
31
32
|
end
|
32
33
|
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def record_activity(user, inputs)
|
38
|
+
provider = inputs[:omniauth_response][:provider]
|
39
|
+
type = 'login' #TODO: GJ: differentiate between login and signup
|
40
|
+
Messaging::Activity::Create.run({
|
41
|
+
application_id: inputs[:application_id],
|
42
|
+
user_id: user.id,
|
43
|
+
content: "#{user.name} logged in via #{inputs[:omniauth_response][:provider]}",
|
44
|
+
tags: "service:users,auth:#{type},provider:#{provider}"
|
45
|
+
})
|
46
|
+
end
|
33
47
|
end
|
34
48
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
|
2
|
-
module RestPack::User::Service::Models
|
1
|
+
module Models::Users
|
3
2
|
class Authentication < ActiveRecord::Base
|
4
|
-
self.table_name = :
|
3
|
+
self.table_name = :restpack_user_authentications
|
5
4
|
|
6
5
|
attr_accessible :application_id, :oauth, :provider, :uid, :user_id, :omniauth
|
7
6
|
serialize :oauth, JSON
|
@@ -1,6 +1,6 @@
|
|
1
|
-
module
|
1
|
+
module Models::Users
|
2
2
|
class User < ActiveRecord::Base
|
3
|
-
self.table_name = :
|
3
|
+
self.table_name = :restpack_user_users
|
4
4
|
attr_accessible :application_id, :description, :email, :image, :location, :name, :nickname
|
5
5
|
|
6
6
|
validates_presence_of :application_id
|
@@ -1,12 +1,14 @@
|
|
1
|
-
module
|
1
|
+
module Serializers::Users
|
2
2
|
class User
|
3
3
|
include RestPack::Serializer
|
4
4
|
|
5
|
-
self.model_class = Models::User
|
5
|
+
self.model_class = Models::Users::User
|
6
6
|
self.key = :users
|
7
7
|
|
8
8
|
attributes :id, :application_id, :description, :email,
|
9
9
|
:image, :avatar, :location, :name, :nickname, :href
|
10
|
+
can_include :authentications
|
11
|
+
can_filter_by :application_id
|
10
12
|
|
11
13
|
def avatar
|
12
14
|
image || "http://robohash.org/#{id}.png?size=200x200"
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "restpack_service"
|
22
|
+
spec.add_dependency "restpack_service_messaging"
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
25
|
spec.add_development_dependency "database_cleaner", "~> 1.0.1"
|
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Commands::User::OmniAuthenticate do
|
3
|
+
describe Commands::Users::User::OmniAuthenticate do
|
4
4
|
is_required :application_id, :omniauth_response
|
5
5
|
is_optional :user_id
|
6
6
|
|
7
|
-
User = Models::User
|
8
|
-
Authentication = Models::Authentication
|
7
|
+
User = Models::Users::User
|
8
|
+
Authentication = Models::Users::Authentication
|
9
9
|
|
10
10
|
let(:response) { subject.class.run(params) }
|
11
11
|
|
@@ -23,7 +23,7 @@ describe Commands::User::OmniAuthenticate do
|
|
23
23
|
context 'existing authentication' do
|
24
24
|
it 'returns the existing user' do
|
25
25
|
response.success?.should == true
|
26
|
-
response.result.should == Serializers::User.resource(@authentication.user)
|
26
|
+
response.result.should == Serializers::Users::User.resource(@authentication.user)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -35,7 +35,7 @@ describe Commands::User::OmniAuthenticate do
|
|
35
35
|
|
36
36
|
it 'returns the existing user' do
|
37
37
|
response.success?.should == true
|
38
|
-
response.result.should == Serializers::User.resource(@authentication.user)
|
38
|
+
response.result.should == Serializers::Users::User.resource(@authentication.user)
|
39
39
|
@authentication.user.authentications.length.should == 2
|
40
40
|
end
|
41
41
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Models::Authentication do
|
3
|
+
describe Models::Users::Authentication do
|
4
4
|
it { should validate_presence_of(:application_id) }
|
5
5
|
it { should validate_presence_of(:omniauth) }
|
6
6
|
it { should validate_presence_of(:provider) }
|
@@ -11,7 +11,6 @@ describe Models::Authentication do
|
|
11
11
|
it { should ensure_length_of(:uid).is_at_most(1024) }
|
12
12
|
|
13
13
|
it { should belong_to(:user) }
|
14
|
-
it { subject.class.table_name.should == 'restpack_authentications' }
|
15
14
|
|
16
15
|
let(:application_id) { 123 }
|
17
16
|
let(:omniauth) { {
|
data/spec/models/user_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Models::User do
|
3
|
+
describe Models::Users::User do
|
4
4
|
it { should validate_presence_of(:application_id) }
|
5
5
|
it { should ensure_length_of(:name).is_at_most(128) }
|
6
6
|
it { should ensure_length_of(:nickname).is_at_most(128) }
|
@@ -8,7 +8,6 @@ describe Models::User do
|
|
8
8
|
it { should ensure_length_of(:image).is_at_most(1024) }
|
9
9
|
it { should ensure_length_of(:location).is_at_most(512) }
|
10
10
|
it { should ensure_length_of(:description).is_at_most(1024) }
|
11
|
-
it { subject.class.table_name.should == 'restpack_users' }
|
12
11
|
|
13
12
|
describe "#authenticate" do
|
14
13
|
pending
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restpack_user_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Joyce
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: restpack_service
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: restpack_service_messaging
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,20 +151,23 @@ files:
|
|
137
151
|
- README.md
|
138
152
|
- Rakefile
|
139
153
|
- config/database.yml
|
140
|
-
- db/migrate/
|
141
|
-
- db/migrate/
|
154
|
+
- db/migrate/20130807130943_create_users.rb
|
155
|
+
- db/migrate/20130807130950_create_authentications.rb
|
142
156
|
- lib/restpack_user_service.rb
|
143
157
|
- lib/restpack_user_service/commands/user/get.rb
|
158
|
+
- lib/restpack_user_service/commands/user/list.rb
|
144
159
|
- lib/restpack_user_service/commands/user/omni_authenticate.rb
|
145
160
|
- lib/restpack_user_service/configuration.rb
|
146
161
|
- lib/restpack_user_service/models/authentication.rb
|
147
162
|
- lib/restpack_user_service/models/user.rb
|
163
|
+
- lib/restpack_user_service/serializers/authentication.rb
|
148
164
|
- lib/restpack_user_service/serializers/user.rb
|
149
165
|
- lib/restpack_user_service/tasks/db.rake
|
150
166
|
- lib/restpack_user_service/tasks/tasks.rb
|
151
167
|
- lib/restpack_user_service/version.rb
|
152
168
|
- restpack_user_service.gemspec
|
153
169
|
- spec/commands/user/get_spec.rb
|
170
|
+
- spec/commands/user/list_spec.rb
|
154
171
|
- spec/commands/user/omni_authenticate_spec.rb
|
155
172
|
- spec/factories/authentication_factory.rb
|
156
173
|
- spec/factories/user_factory.rb
|
@@ -177,12 +194,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
194
|
version: '0'
|
178
195
|
requirements: []
|
179
196
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.0.
|
197
|
+
rubygems_version: 2.0.7
|
181
198
|
signing_key:
|
182
199
|
specification_version: 4
|
183
200
|
summary: Users and Authentications
|
184
201
|
test_files:
|
185
202
|
- spec/commands/user/get_spec.rb
|
203
|
+
- spec/commands/user/list_spec.rb
|
186
204
|
- spec/commands/user/omni_authenticate_spec.rb
|
187
205
|
- spec/factories/authentication_factory.rb
|
188
206
|
- spec/factories/user_factory.rb
|