securial 0.8.1 → 1.0.1

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -16
  3. data/app/controllers/concerns/securial/identity.rb +18 -9
  4. data/app/controllers/securial/status_controller.rb +2 -0
  5. data/app/controllers/securial/users_controller.rb +1 -1
  6. data/app/views/securial/status/show.json.jbuilder +1 -1
  7. data/bin/securial +5 -54
  8. data/db/migrate/20250606182648_seed_roles_and_users.rb +69 -0
  9. data/lib/generators/securial/install/install_generator.rb +2 -2
  10. data/lib/generators/securial/install/templates/securial_initializer.erb +115 -18
  11. data/lib/generators/securial/install/views_generator.rb +2 -1
  12. data/lib/generators/securial/jbuilder/jbuilder_generator.rb +2 -0
  13. data/lib/generators/securial/scaffold/scaffold_generator.rb +2 -0
  14. data/lib/securial/auth/auth_encoder.rb +3 -3
  15. data/lib/securial/auth/session_creator.rb +1 -1
  16. data/lib/securial/auth/token_generator.rb +13 -13
  17. data/lib/securial/cli.rb +158 -0
  18. data/lib/securial/config/configuration.rb +3 -53
  19. data/lib/securial/config/signature.rb +107 -0
  20. data/lib/securial/config/validation.rb +59 -16
  21. data/lib/securial/config.rb +17 -16
  22. data/lib/securial/engine.rb +2 -0
  23. data/lib/securial/engine_initializers.rb +21 -2
  24. data/lib/securial/error/base_securial_error.rb +5 -3
  25. data/lib/securial/error/config.rb +0 -28
  26. data/lib/securial/helpers/key_transformer.rb +33 -0
  27. data/lib/securial/helpers/normalizing_helper.rb +1 -1
  28. data/lib/securial/helpers/regex_helper.rb +6 -7
  29. data/lib/securial/helpers/roles_helper.rb +6 -7
  30. data/lib/securial/helpers.rb +1 -0
  31. data/lib/securial/logger.rb +7 -8
  32. data/lib/securial/middleware/response_headers.rb +19 -0
  33. data/lib/securial/middleware/transform_request_keys.rb +35 -0
  34. data/lib/securial/middleware/transform_response_keys.rb +47 -0
  35. data/lib/securial/middleware.rb +3 -0
  36. data/lib/securial/security/request_rate_limiter.rb +45 -0
  37. data/lib/securial/security.rb +8 -0
  38. data/lib/securial/version.rb +1 -1
  39. data/lib/securial.rb +4 -4
  40. data/lib/tasks/securial_routes.rake +26 -0
  41. metadata +47 -19
  42. data/lib/securial/config/validation/logger_validation.rb +0 -29
  43. data/lib/securial/config/validation/mailer_validation.rb +0 -24
  44. data/lib/securial/config/validation/password_validation.rb +0 -91
  45. data/lib/securial/config/validation/response_validation.rb +0 -37
  46. data/lib/securial/config/validation/roles_validation.rb +0 -32
  47. data/lib/securial/config/validation/security_validation.rb +0 -56
  48. data/lib/securial/config/validation/session_validation.rb +0 -87
@@ -1,87 +0,0 @@
1
- require "securial/error"
2
-
3
- module Securial
4
- module Config
5
- module Validation
6
- module SessionValidation
7
- class << self
8
- VALID_SESSION_ENCRYPTION_ALGORITHMS = %i[hs256 hs384 hs512].freeze
9
-
10
- def validate!(securial_config)
11
- validate_session_expiry_duration!(securial_config)
12
- validate_session_algorithm!(securial_config)
13
- validate_session_secret!(securial_config)
14
- validate_session_refresh_token!(securial_config)
15
- end
16
-
17
- private
18
-
19
- def validate_session_expiry_duration!(securial_config)
20
- if securial_config.session_expiration_duration.nil?
21
- error_message = "Session expiration duration is not set."
22
- Securial.logger.fatal(error_message)
23
- raise Securial::Error::Config::SessionValidationError, error_message
24
- end
25
- if securial_config.session_expiration_duration.class != ActiveSupport::Duration
26
- error_message = "Session expiration duration must be an ActiveSupport::Duration."
27
- Securial.logger.fatal(error_message)
28
- raise Securial::Error::Config::SessionValidationError, error_message
29
- end
30
- if securial_config.session_expiration_duration <= 0
31
- Securial.logger.fatal("Session expiration duration must be greater than 0.")
32
- raise Securial::Error::Config::SessionValidationError, "Session expiration duration must be greater than 0."
33
- end
34
- end
35
-
36
- def validate_session_algorithm!(securial_config)
37
- if securial_config.session_algorithm.blank?
38
- error_message = "Session algorithm is not set."
39
- Securial.logger.fatal(error_message)
40
- raise Securial::Error::Config::SessionValidationError, error_message
41
- end
42
- unless securial_config.session_algorithm.is_a?(Symbol)
43
- error_message = "Session algorithm must be a Symbol."
44
- Securial.logger.fatal(error_message)
45
- raise Securial::Error::Config::SessionValidationError, error_message
46
- end
47
- unless VALID_SESSION_ENCRYPTION_ALGORITHMS.include?(securial_config.session_algorithm)
48
- error_message = "Invalid session algorithm. Valid options are: #{VALID_SESSION_ENCRYPTION_ALGORITHMS.map(&:inspect).join(', ')}."
49
- Securial.logger.fatal(error_message)
50
- raise Securial::Error::Config::SessionValidationError, error_message
51
- end
52
- end
53
-
54
- def validate_session_secret!(securial_config)
55
- if securial_config.session_secret.blank?
56
- error_message = "Session secret is not set."
57
- Securial.logger.fatal(error_message)
58
- raise Securial::Error::Config::SessionValidationError, error_message
59
- end
60
- unless securial_config.session_secret.is_a?(String)
61
- error_message = "Session secret must be a String."
62
- Securial.logger.fatal(error_message)
63
- raise Securial::Error::Config::SessionValidationError, error_message
64
- end
65
- end
66
-
67
- def validate_session_refresh_token!(securial_config)
68
- if securial_config.session_refresh_token_expires_in.nil?
69
- error_message = "Session refresh token expiration duration is not set."
70
- Securial.logger.fatal(error_message)
71
- raise Securial::Error::Config::SessionValidationError, error_message
72
- end
73
- if securial_config.session_refresh_token_expires_in.class != ActiveSupport::Duration
74
- error_message = "Session refresh token expiration duration must be an ActiveSupport::Duration."
75
- Securial.logger.fatal(error_message)
76
- raise Securial::Error::Config::SessionValidationError, error_message
77
- end
78
- if securial_config.session_refresh_token_expires_in <= 0
79
- Securial.logger.fatal("Session refresh token expiration duration must be greater than 0.")
80
- raise Securial::Error::Config::SessionValidationError, "Session refresh token expiration duration must be greater than 0."
81
- end
82
- end
83
- end
84
- end
85
- end
86
- end
87
- end