snf_core 0.3.3 → 0.3.5
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/snf_core/application_controller.rb +1 -1
- data/app/controllers/snf_core/auth_controller.rb +29 -2
- data/app/services/snf_core/token_service.rb +2 -2
- data/config/routes.rb +2 -0
- data/db/seeds.rb +4 -0
- data/lib/snf_core/version.rb +1 -1
- data/spec/dummy/log/development.log +1 -0
- data/spec/dummy/log/test.log +27231 -0
- data/spec/dummy/tmp/storage/13/mg/13mg8v92ahtrmy24c3ldxur1ucix +0 -0
- data/spec/dummy/tmp/storage/2c/aj/2cajptoi5l0frievl0xf7jsy74h4 +0 -0
- data/spec/dummy/tmp/storage/2i/hd/2ihdj7scvt3tabvwvlm4hafjq02f +0 -0
- data/spec/dummy/tmp/storage/43/dg/43dg3reu9k9abkakn75wm2doao27 +0 -0
- data/spec/dummy/tmp/storage/4a/11/4a11n6wx0aejzzc4izg06lrtf7bh +0 -0
- data/spec/dummy/tmp/storage/5i/g7/5ig7q2bozvmts84czsgt0qmyjh4n +0 -0
- data/spec/dummy/tmp/storage/6g/l5/6gl5ka5ym738zkzagrcv48vpiydt +0 -0
- data/spec/dummy/tmp/storage/75/lh/75lhk508nuyo8ontkjzwqhc61w7v +0 -0
- data/spec/dummy/tmp/storage/8b/4y/8b4y0atwc0xxngstvjof24qsy5mu +0 -0
- data/spec/dummy/tmp/storage/90/73/9073htn22jmqpagfgaiy7ckhwh1v +0 -0
- data/spec/dummy/tmp/storage/ar/ru/arrurp5kkzq4jwmuinjliirylxy6 +0 -0
- data/spec/dummy/tmp/storage/co/07/co07wnjo2nniqapojq72gwgx9vd4 +0 -0
- data/spec/dummy/tmp/storage/dj/l5/djl5h5s8uonbn9c0tplidys195ip +0 -0
- data/spec/dummy/tmp/storage/fa/tg/fatgiq95ce7r0583fkd3fnh09cdi +0 -0
- data/spec/dummy/tmp/storage/g5/n6/g5n68vyfby44yxph0ddl074a2ek5 +0 -0
- data/spec/dummy/tmp/storage/if/22/if22a5bsjrfkzzrx6aph7ndaq3e9 +0 -0
- data/spec/dummy/tmp/storage/j6/8j/j68jlrv5iqj4io0ca0ph0e2bhwzj +0 -0
- data/spec/dummy/tmp/storage/km/zc/kmzcr7by4mds5qnu4gj2y6wsb7am +0 -0
- data/spec/dummy/tmp/storage/ql/za/qlza0hdpbty3w02pm5065tjpv7rq +0 -0
- data/spec/dummy/tmp/storage/r7/9a/r79aqkzfr2bd8w9ykc84umoxqk4r +0 -0
- data/spec/dummy/tmp/storage/st/et/stetkwava3iw3v248evii9x96h8d +0 -0
- data/spec/dummy/tmp/storage/ut/pt/utpt26uq0izve9adaq7i7oaoelb5 +0 -0
- data/spec/dummy/tmp/storage/v6/e8/v6e8gegou6jeydptks28q513kork +0 -0
- data/spec/dummy/tmp/storage/xu/al/xualm0jzpah22cjszstv00n1u9pq +0 -0
- data/spec/dummy/tmp/storage/zh/8h/zh8hu59i3ipo5towkdedde85m2cg +0 -0
- data/spec/examples.txt +196 -194
- data/spec/requests/snf_core/auth_spec.rb +48 -10
- metadata +28 -3
- data/spec/dummy/tmp/pids/server.pid +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5c3846a61247a975565c121fb8a4f40fc5df57bd7c194aa6cc057fc065147c2
|
4
|
+
data.tar.gz: 62b4e90257c49fe1b9bfdc8483cbe8222745b81d2da6fb9e25df3e0859db782b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d10278f0afecf87dc071c2398d1233823882a4d3d1352751367b851ae2bcd3b505227c97779b58aafb856eb7a4ac17918f6e292e3223276751289c1dac949c9
|
7
|
+
data.tar.gz: 0fec193cecf15421b0731383602c24b550839dd20ca2a94d5b15b2d44641dba4d7118f588ec24be00c64d8540b5bece0aaba921b17885d74be0b4c3434e29472
|
@@ -9,7 +9,7 @@ module SnfCore
|
|
9
9
|
def is_allowed
|
10
10
|
user_role = UserRole.find_by(user: current_user)
|
11
11
|
role = Role.find(user_role.role_id)
|
12
|
-
render json: { error: "Not authorized" }, status: :ok unless role.name == "
|
12
|
+
render json: { error: "Not authorized" }, status: :ok unless role.name == "User" || role.name == "Admin"
|
13
13
|
end
|
14
14
|
|
15
15
|
def current_user
|
@@ -2,6 +2,30 @@ module SnfCore
|
|
2
2
|
class AuthController < ApplicationController
|
3
3
|
before_action :token_service
|
4
4
|
|
5
|
+
def validate_token
|
6
|
+
token = params[:token]
|
7
|
+
return render json: { valid: false }, status: :unauthorized unless token
|
8
|
+
|
9
|
+
begin
|
10
|
+
payload = @token_service.decode(token)
|
11
|
+
user = User.find_by(id: payload["user"]["id"])
|
12
|
+
|
13
|
+
if user
|
14
|
+
user_role = UserRole.find_by(user: user)
|
15
|
+
role = Role.find(user_role.role_id)
|
16
|
+
render json: {
|
17
|
+
valid: true,
|
18
|
+
user: user.as_json(except: [ :password_digest ]),
|
19
|
+
role: role.name
|
20
|
+
}
|
21
|
+
else
|
22
|
+
render json: { valid: false }, status: :unauthorized
|
23
|
+
end
|
24
|
+
rescue JWT::DecodeError => e
|
25
|
+
render json: { valid: false, error: "Invalid token" }, status: :unauthorized
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
5
29
|
def signup
|
6
30
|
ActiveRecord::Base.transaction do
|
7
31
|
@address = Address.new(address_params)
|
@@ -11,6 +35,10 @@ module SnfCore
|
|
11
35
|
@user.address = @address
|
12
36
|
|
13
37
|
if @user.save
|
38
|
+
# Assign default user role
|
39
|
+
user_role = Role.find_by(name: "User")
|
40
|
+
UserRole.create!(user: @user, role: user_role)
|
41
|
+
|
14
42
|
@business = Business.new(
|
15
43
|
user: @user,
|
16
44
|
business_name: signup_params[:business_name],
|
@@ -45,14 +73,13 @@ module SnfCore
|
|
45
73
|
def login
|
46
74
|
user = User.find_by(phone_number: auth_params[:phone_number])
|
47
75
|
return render json: { success: false, error: "User doesn't exist" }, status: :unauthorized unless user
|
48
|
-
return render json: { success: false, warn: true, error: "Password has not been reset please reset your password to continue!" }, status: :unauthorized unless user.password_changed
|
49
76
|
return render json: { success: false, error: "Invalid email or password" }, status: :unauthorized unless user.authenticate(auth_params[:password])
|
50
77
|
user_role = UserRole.find_by(user: user)
|
51
78
|
return render json: { success: false, error: "No role was assigned to your user" }, status: :unauthorized unless user_role
|
52
79
|
|
53
80
|
role = Role.find(user_role.role_id)
|
54
81
|
token = @token_service.encode({ user: user.as_json.except("password_digest", "created_at", "updated_at"), role: role.name })
|
55
|
-
render json: { success: true, token: token }
|
82
|
+
render json: { success: true, token: token, user: user.as_json(except: [ :password_digest ]), role: role.name }
|
56
83
|
end
|
57
84
|
|
58
85
|
private
|
@@ -9,8 +9,8 @@ module SnfCore
|
|
9
9
|
def decode(token)
|
10
10
|
body = JWT.decode(token, ENV["SECRET_KEY_BASE"] || "secret_key_base")[0]
|
11
11
|
HashWithIndifferentAccess.new body
|
12
|
-
rescue
|
13
|
-
raise
|
12
|
+
rescue JWT::DecodeError, JSON::ParserError => e
|
13
|
+
raise JWT::DecodeError.new("Invalid token")
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
data/config/routes.rb
CHANGED
data/db/seeds.rb
ADDED
data/lib/snf_core/version.rb
CHANGED
@@ -8919,3 +8919,4 @@ FOREIGN KEY ("user_id")
|
|
8919
8919
|
[1m[36mActiveRecord::InternalMetadata Update (0.8ms)[0m [1m[33mUPDATE "ar_internal_metadata" SET "value" = 'test', "updated_at" = '2025-03-12 19:56:14.866070' WHERE "ar_internal_metadata"."key" = 'environment' /*application='Dummy'*/[0m
|
8920
8920
|
[1m[36mActiveRecord::InternalMetadata Load (0.4ms)[0m [1m[34mSELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'schema_sha1' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/[0m
|
8921
8921
|
[1m[36mActiveRecord::InternalMetadata Create (0.5ms)[0m [1m[32mINSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ('schema_sha1', 'e5ce873c596e29727a72a2140a63fcb330b84481', '2025-03-12 19:56:14.870566', '2025-03-12 19:56:14.870570') RETURNING "key" /*application='Dummy'*/[0m
|
8922
|
+
[1m[36mActiveRecord::SchemaMigration Load (4.5ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/[0m
|