Module: Securial

Extended by:
Securial
Included in:
Securial
Defined in:
lib/securial.rb,
lib/securial/cli.rb,
lib/securial/auth.rb,
lib/securial/error.rb,
lib/securial/config.rb,
lib/securial/engine.rb,
lib/securial/logger.rb,
lib/securial/helpers.rb,
lib/securial/version.rb,
lib/securial/security.rb,
lib/securial/error/auth.rb,
lib/securial/middleware.rb,
app/models/securial/role.rb,
app/models/securial/user.rb,
lib/securial/error/config.rb,
app/models/securial/current.rb,
app/models/securial/session.rb,
lib/securial/logger/builder.rb,
lib/securial/config/signature.rb,
lib/securial/logger/formatter.rb,
lib/securial/auth/auth_encoder.rb,
lib/securial/config/validation.rb,
lib/securial/logger/broadcaster.rb,
lib/securial/engine_initializers.rb,
app/jobs/securial/application_job.rb,
lib/securial/auth/session_creator.rb,
lib/securial/auth/token_generator.rb,
lib/securial/config/configuration.rb,
lib/securial/helpers/regex_helper.rb,
lib/securial/helpers/roles_helper.rb,
app/models/securial/role_assignment.rb,
app/mailers/securial/securial_mailer.rb,
lib/securial/helpers/key_transformer.rb,
app/models/securial/application_record.rb,
lib/securial/error/base_securial_error.rb,
app/mailers/securial/application_mailer.rb,
lib/securial/helpers/normalizing_helper.rb,
lib/securial/middleware/response_headers.rb,
app/controllers/securial/roles_controller.rb,
app/controllers/securial/users_controller.rb,
app/controllers/concerns/securial/identity.rb,
app/controllers/securial/status_controller.rb,
lib/securial/middleware/request_tag_logger.rb,
lib/securial/security/request_rate_limiter.rb,
app/controllers/securial/accounts_controller.rb,
app/controllers/securial/sessions_controller.rb,
app/controllers/securial/passwords_controller.rb,
lib/securial/middleware/transform_request_keys.rb,
app/controllers/securial/application_controller.rb,
lib/generators/securial/install/views_generator.rb,
lib/securial/middleware/transform_response_keys.rb,
app/models/concerns/securial/password_resettable.rb,
lib/generators/securial/install/install_generator.rb,
lib/generators/securial/jbuilder/jbuilder_generator.rb,
lib/generators/securial/scaffold/scaffold_generator.rb,
app/controllers/securial/role_assignments_controller.rb

Overview

Rack middleware for adding request context to log messages.

This middleware automatically tags all log messages within a request with contextual information like request ID, IP address, and user agent. This enables better tracking and debugging of requests across the application by providing consistent context in all log entries.

Examples:

Adding middleware to Rails application

# config/application.rb
config.middleware.use Securial::Middleware::RequestTagLogger

Log output with request tags

# Without middleware:
[2024-06-27 10:30:15] INFO  -- User authentication successful

# With middleware:
[2024-06-27 10:30:15] INFO  -- [abc123-def456] [IP:192.168.1.100] [UA:Mozilla/5.0...] User authentication successful

Defined Under Namespace

Modules: Auth, Config, Error, Generators, Helpers, Identity, Logger, Middleware, PasswordResettable, Security Classes: AccountsController, ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, CLI, Current, Engine, PasswordsController, Role, RoleAssignment, RoleAssignmentsController, RolesController, SecurialMailer, Session, SessionsController, StatusController, User, UsersController

Constant Summary collapse

VERSION =

Current version of the Securial gem.

This constant is used by the gem specification to determine the version of the gem when it is built and published to RubyGems. It follows Semantic Versioning 2.0.0.

Returns:

  • (String)

    the current version in the format “major.minor.patch”

See Also:

"1.0.3".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#loggerSecurial::Logger::Builder

Returns the logger instance used by Securial.

If no logger has been set, initializes a new logger instance using the Securial::Logger::Builder class, which configures the logger based on the current environment settings.

Returns:

See Also:



37
38
39
# File 'lib/securial/logger.rb', line 37

def logger
  @logger
end

Instance Method Details

#configurationSecurial::Config::Configuration

Gets the current configuration instance.

Returns the existing configuration or creates a new default configuration if one hasn’t been set yet.

Returns:



36
37
38
# File 'lib/securial/config.rb', line 36

def configuration
  @configuration ||= Config::Configuration.new
end

#configuration=(config) ⇒ Securial::Config::Configuration

Sets the configuration instance.

Validates the provided configuration to ensure all required settings are present and have valid values.

Parameters:

Returns:

Raises:

  • (ArgumentError)

    if the provided object is not a Configuration instance

  • (Securial::Error::Config::ValidationError)

    if the configuration is invalid



50
51
52
53
54
55
56
57
# File 'lib/securial/config.rb', line 50

def configuration=(config)
  if config.is_a?(Config::Configuration)
    @configuration = config
    Securial::Config::Validation.validate_all!(configuration)
  else
    raise ArgumentError, "Expected an instance of Securial::Config::Configuration"
  end
end

#configure {|config| ... } ⇒ Securial::Config::Configuration

Configures the Securial framework using a block.

This method provides the conventional Ruby configuration block pattern, yielding the current configuration instance to the provided block for modification. After the block executes, the configuration is validated.

Yields:

  • (config)

    Yields the configuration instance to the block

Yield Parameters:

Returns:

Raises:

  • (Securial::Error::Config::ValidationError)

    if the configuration is invalid



69
70
71
72
73
# File 'lib/securial/config.rb', line 69

def configure
  yield(configuration) if block_given?
  Securial::Config::Validation.validate_all!(configuration)
  configuration
end

#protected_namespaceString

Returns the namespace used for protected resources in the application.

Returns:

  • (String)

    the protected namespace designation



# File 'lib/securial.rb', line 37

#titleized_admin_roleString

Returns the admin role name with proper title-case formatting.

Returns:

  • (String)

    the admin role title



45
# File 'lib/securial.rb', line 45

delegate :protected_namespace, to: Securial::Helpers::RolesHelper