cats_core 1.0.6 → 1.0.10
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.
- checksums.yaml +4 -4
- data/app/controllers/cats/core/access_controller.rb +37 -0
- data/app/controllers/cats/core/application_controller.rb +1 -1
- data/app/controllers/cats/core/notifications_controller.rb +26 -4
- data/app/controllers/cats/core/roles_controller.rb +18 -0
- data/app/controllers/cats/core/users_controller.rb +23 -0
- data/app/models/cats/core/notification.rb +5 -1
- data/app/models/cats/core/role.rb +1 -0
- data/app/models/cats/core/stack.rb +1 -1
- data/app/models/cats/core/user.rb +12 -0
- data/config/routes.rb +19 -1
- data/lib/cats/core/version.rb +1 -1
- data/lib/cats_core.rb +1 -0
- data/spec/factories/cats/core/notifications.rb +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c511fd3cb4ee9da3373af2685f3d0afc00b5398c8e4383aaa0fe3d07ddfe5ffc
|
4
|
+
data.tar.gz: dc4d3bc44ef05e623f02456574e1c038efaca0d0fe001c75023717afe4e2ba71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04c8d868354002f73de37919c6fa4acf069bc4f88dfe7c471dd1b54253ce7bc23721b0c2ba351a8860a8998e2aa8967581fbe8ddf4e198c011dff1125e41cfcb
|
7
|
+
data.tar.gz: 44a86aaf44b09fcb2bfcc44d38d19220dbcb04f59303508bc308d54535da0d60c4b020b992291a5cc8702d8d3501d935d89332aa3f92407e3c8563b990ad4e8e
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Cats
|
2
|
+
module Core
|
3
|
+
class AccessController < ApplicationController
|
4
|
+
skip_before_action :authenticate, only: [:login]
|
5
|
+
|
6
|
+
def login
|
7
|
+
user = Cats::Core::User.find_by(email: auth_params[:email])
|
8
|
+
if user
|
9
|
+
if user.authenticate(auth_params[:password])
|
10
|
+
roles = user.roles.map(&:name)
|
11
|
+
|
12
|
+
unless roles.count.positive?
|
13
|
+
render json: { error: 'User has no roles.' }, status: :unprocessable_entity
|
14
|
+
return
|
15
|
+
end
|
16
|
+
|
17
|
+
payload = {
|
18
|
+
id: user.id, email: user.email, first_name: user.first_name, last_name: user.last_name, roles: roles
|
19
|
+
}
|
20
|
+
jwt = Cats::Core::TokenAuthService.issue(payload)
|
21
|
+
render json: { token: jwt, user: payload }
|
22
|
+
else
|
23
|
+
rener json: { error: 'Invalid username or password.' }, status: 400
|
24
|
+
end
|
25
|
+
else
|
26
|
+
render json: { error: 'User does not exist.' }, status: 400
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def auth_params
|
33
|
+
params.require(:auth).permit(:email, :password)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -1,14 +1,36 @@
|
|
1
1
|
module Cats
|
2
2
|
module Core
|
3
3
|
class NotificationsController < ApplicationController
|
4
|
+
before_action :set_notification, only: %i[mark_as_read mark_as_unread]
|
4
5
|
def index
|
5
|
-
data =
|
6
|
-
render json: data
|
6
|
+
data = Notification.messages(current_user.notifications.newest_first)
|
7
|
+
render json: { success: true, data: data }
|
8
|
+
end
|
9
|
+
|
10
|
+
def read
|
11
|
+
data = Notification.messages(current_user.notifications.read.newest_first)
|
12
|
+
render json: { success: true, data: data }
|
7
13
|
end
|
8
14
|
|
9
15
|
def unread
|
10
|
-
data =
|
11
|
-
render json: data
|
16
|
+
data = Notification.messages(current_user.notifications.unread.newest_first)
|
17
|
+
render json: { success: true, data: data }
|
18
|
+
end
|
19
|
+
|
20
|
+
def mark_as_read
|
21
|
+
@notification.mark_as_read!
|
22
|
+
render json: { success: true, data: @notification.message }
|
23
|
+
end
|
24
|
+
|
25
|
+
def mark_as_unread
|
26
|
+
@notification.mark_as_unread!
|
27
|
+
render json: { success: true, data: @notification.message }
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def set_notification
|
33
|
+
@notification = Notification.find(params[:id])
|
12
34
|
end
|
13
35
|
end
|
14
36
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Cats
|
2
|
+
module Core
|
3
|
+
class RolesController < ApplicationController
|
4
|
+
before_action :set_role, only: [:users]
|
5
|
+
|
6
|
+
def users
|
7
|
+
data = ActiveModelSerializers::SerializableResource.new(@role.users)
|
8
|
+
render json: { success: true, data: data }
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def set_role
|
14
|
+
@role = Role.find(params[:id])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Cats
|
2
|
+
module Core
|
3
|
+
class UsersController < ApplicationController
|
4
|
+
before_action :set_user, only: %i[stores warehouses]
|
5
|
+
|
6
|
+
def stores
|
7
|
+
data = ActiveModelSerializers::SerializableResource.new(@user.stores)
|
8
|
+
render json: { success: true, data: data }
|
9
|
+
end
|
10
|
+
|
11
|
+
def warehouses
|
12
|
+
data = ActiveModelSerializers::SerializableResource.new(@user.warehouses)
|
13
|
+
render json: { success: true, data: data }
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def set_user
|
19
|
+
@user = User.find(params[:id])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -6,7 +6,11 @@ module Cats
|
|
6
6
|
belongs_to :recipient, polymorphic: true
|
7
7
|
|
8
8
|
def message
|
9
|
-
to_notification.message
|
9
|
+
{ id: id, read: !read_at.nil? }.merge(to_notification.message)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.messages(notifications)
|
13
|
+
notifications.map(&:message)
|
10
14
|
end
|
11
15
|
end
|
12
16
|
end
|
@@ -40,7 +40,7 @@ module Cats
|
|
40
40
|
rule = Cats::Core::StackingRule.first
|
41
41
|
|
42
42
|
# If no rule is defined, then define a default rule
|
43
|
-
rule ||= Cats::Core::StackingRule(
|
43
|
+
rule ||= Cats::Core::StackingRule.new(
|
44
44
|
space_between_stack: 1,
|
45
45
|
distance_from_gangway: 2,
|
46
46
|
distance_from_ceiling: 1,
|
@@ -11,6 +11,18 @@ module Cats
|
|
11
11
|
validates :first_name, :last_name, :email, presence: true
|
12
12
|
validates :password, length: { minimum: 6 }
|
13
13
|
validates :email, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }
|
14
|
+
|
15
|
+
def warehouses
|
16
|
+
return unless details.key?('warehouses')
|
17
|
+
|
18
|
+
Cats::Core::Location.where(id: details['warehouses'], location_type: Cats::Core::Location::WAREHOUSE)
|
19
|
+
end
|
20
|
+
|
21
|
+
def stores
|
22
|
+
return unless details.key?('stores')
|
23
|
+
|
24
|
+
Cats::Core::Store.where(id: details['stores'])
|
25
|
+
end
|
14
26
|
end
|
15
27
|
end
|
16
28
|
end
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
Cats::Core::Engine.routes.draw do
|
2
|
+
post '/login', controller: :access, action: :login
|
2
3
|
get '/notifications/unread', controller: :notifications, action: :unread
|
4
|
+
get '/notifications/read', controller: :notifications, action: :read
|
3
5
|
|
4
|
-
resources :notifications, only: [:index]
|
6
|
+
resources :notifications, only: [:index] do
|
7
|
+
member do
|
8
|
+
post 'mark_as_read', controller: :notifications, action: :mark_as_read
|
9
|
+
post 'mark_as_unread', controller: :notifications, action: :mark_as_unread
|
10
|
+
end
|
11
|
+
end
|
12
|
+
resources :roles do
|
13
|
+
member do
|
14
|
+
get 'users', controller: :roles, action: :users
|
15
|
+
end
|
16
|
+
end
|
17
|
+
resources :users do
|
18
|
+
member do
|
19
|
+
get 'stores', controller: :users, action: :stores
|
20
|
+
get 'warehouses', controller: :users, action: :warehouses
|
21
|
+
end
|
22
|
+
end
|
5
23
|
end
|
data/lib/cats/core/version.rb
CHANGED
data/lib/cats_core.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cats_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: active_model_serializers
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: ancestry
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,8 +216,11 @@ files:
|
|
202
216
|
- MIT-LICENSE
|
203
217
|
- README.md
|
204
218
|
- Rakefile
|
219
|
+
- app/controllers/cats/core/access_controller.rb
|
205
220
|
- app/controllers/cats/core/application_controller.rb
|
206
221
|
- app/controllers/cats/core/notifications_controller.rb
|
222
|
+
- app/controllers/cats/core/roles_controller.rb
|
223
|
+
- app/controllers/cats/core/users_controller.rb
|
207
224
|
- app/jobs/cats/core/application_job.rb
|
208
225
|
- app/models/cats/core/application_module.rb
|
209
226
|
- app/models/cats/core/application_record.rb
|