Commit cfbb36d
Changed files (6)
app
config
initializers
db
app/models/scim/user_mapper.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module SCIM
+ class UserMapper
+ def initialize(url_helpers)
+ @url_helpers = url_helpers
+ end
+
+ def map_from(user)
+ Scim::Shady::User.build do |x|
+ x.id = user.uuid
+ x.username = user.email
+ x.created_at = user.created_at
+ x.updated_at = user.updated_at
+ x.location = @url_helpers.scim_v2_users_url(user)
+ x.version = user.lock_version
+ x.emails do |y|
+ y.add(user.email, primary: true)
+ end
+ end
+ end
+ end
+end
app/models/scim/user_repository.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+module SCIM
+ class UserRepository
+ attr_reader :mapper
+
+ def initialize(mapper)
+ @mapper = mapper
+ end
+
+ def find!(id)
+ mapper.map_from(User.find_by!(uuid: id))
+ end
+
+ def create!(params)
+ password = SecureRandom.hex(32)
+ mapper.map_from(User.create!(email: params[:userName], password: password))
+ end
+
+ def update!(id, params)
+ user = User.find_by!(uuid: id)
+ user.update!(email: params[:userName])
+ mapper.map_from(user)
+ end
+
+ def destroy!(id)
+ User.find_by!(uuid: id).destroy!
+ end
+ end
+end
app/models/user_mapper.rb
@@ -1,21 +0,0 @@
-# frozen_string_literal: true
-
-class UserMapper
- def initialize(url_helpers)
- @url_helpers = url_helpers
- end
-
- def map_from(user)
- Scim::Shady::User.build do |x|
- x.id = user.uuid
- x.username = user.email
- x.created_at = user.created_at
- x.updated_at = user.updated_at
- x.location = @url_helpers.scim_v2_users_url(user)
- x.version = user.lock_version
- x.emails do |y|
- y.add(user.email, primary: true)
- end
- end
- end
-end
app/models/user_repository.rb
@@ -1,28 +0,0 @@
-# frozen_string_literal: true
-
-class UserRepository
- attr_reader :mapper
-
- def initialize(mapper)
- @mapper = mapper
- end
-
- def find!(id)
- mapper.map_from(User.find_by!(uuid: id))
- end
-
- def create!(params)
- password = SecureRandom.hex(32)
- mapper.map_from(User.create!(email: params[:userName], password: password))
- end
-
- def update!(id, params)
- user = User.find_by!(uuid: id)
- user.update!(email: params[:userName])
- mapper.map_from(user)
- end
-
- def destroy!(id)
- User.find_by!(uuid: id).destroy!
- end
-end
config/initializers/spank.rb
@@ -2,10 +2,10 @@
container = Spank::Container.new
container.register(:user_repository) do |x|
- UserRepository.new(x.resolve(:user_mapper))
+ SCIM::UserRepository.new(x.resolve(:user_mapper))
end.as_singleton
container.register(:user_mapper) do |x|
- UserMapper.new(x.resolve(:url_helpers))
+ SCIM::UserMapper.new(x.resolve(:url_helpers))
end.as_singleton
container.register(:url_helpers) do |_container|
Rails.application.routes.url_helpers
db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20180311010910) do
+ActiveRecord::Schema.define(version: 2018_03_11_010910) do
create_table "sessions", force: :cascade do |t|
t.string "session_id", null: false