snf_core 0.3.3 → 0.3.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b4999331d8f73d14e49edaa89395e04937ee3a2891d7270ece2aae9f6bb696c
4
- data.tar.gz: b82f422af01f29febd6cd7560a4c18f85b32707074c663ec51db92090969a5b5
3
+ metadata.gz: 75d7b6f13ca51d026554f6b127d2f75a26b9b0debc00a551aca23b32e1b4c796
4
+ data.tar.gz: d3a88c8f3f182fd530425a4aa668af657cb1e216ff691fa55ecd614838bea726
5
5
  SHA512:
6
- metadata.gz: f30201d8ebe23d009b4e20c395343a0f5c4c01de791d8172d618fe9b56bab355a5e8a19e4804f34ffca9693683ca2018c75d144f150430be66b5dd9ace9f6184
7
- data.tar.gz: 2db335013cff279cfa40e2243b56a63082ca735aab71b369a6a030db9e8afbb6a49a693605457ffa5825b3380dd9d044141f695296256d6107c4ec9a23ed29e0
6
+ metadata.gz: 72e0edb61396f5f6589a49065343dfbde36b87e8d135be0a66708f44a497644748bb6118e9b6d4b82e59bc175dd30c04ef8d00eef83253b14441ade901968b53
7
+ data.tar.gz: 91c39f494556e5f28b70706768f0760330bed76f575b8735d2b598c80516fce8fb17005729da0b669e900027ec7a6aedc58d126bcc2829431254ba7308f3c527
@@ -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 StandardError.new("Invalid token")
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
@@ -1,4 +1,6 @@
1
1
  SnfCore::Engine.routes.draw do
2
+ mount SnfCore::Engine => "/snf_core"
2
3
  post "auth/login"
3
4
  post "auth/signup"
5
+ post "auth/validate_token"
4
6
  end
data/db/seeds.rb ADDED
@@ -0,0 +1,4 @@
1
+ # Create default roles if they don't exist
2
+ [ 'User', 'Admin', 'SystemAdmin' ].each do |role_name|
3
+ SnfCore::Role.find_or_create_by!(name: role_name)
4
+ end
@@ -1,3 +1,3 @@
1
1
  module SnfCore
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
@@ -8919,3 +8919,4 @@ FOREIGN KEY ("user_id")
8919
8919
  ActiveRecord::InternalMetadata Update (0.8ms) UPDATE "ar_internal_metadata" SET "value" = 'test', "updated_at" = '2025-03-12 19:56:14.866070' WHERE "ar_internal_metadata"."key" = 'environment' /*application='Dummy'*/
8920
8920
  ActiveRecord::InternalMetadata Load (0.4ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'schema_sha1' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
8921
8921
  ActiveRecord::InternalMetadata Create (0.5ms) INSERT 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'*/
8922
+ ActiveRecord::SchemaMigration Load (4.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/