one_time_password

This Gem can be used to create 2FA (Two-Factor Authentication) function, email address verification function for member registration and etc in Ruby on Rails.


License
MIT
Install
gem install one_time_password -v 0.2.1

Documentation

OneTimePassword

This Gem can be used to create 2FA (Two-Factor Authentication) function, email address verification function for member registration and etc in Ruby on Rails.

Installation

Add this line to your application's Gemfile:

gem "one_time_password"

And then execute:

$ bundle

Or install it yourself as:

$ gem install one_time_password

Usage

Run command for an installation.

bundle exec rails g one_time_password:install

The following events will take place when using the install generator:

  • An initializer file will be created at config/initializers/one_time_password.rb
  • A migration file will be created at db/migrate/xxxxxxxxxxxxxx_create_one_time_authentication.rb
  • A model file will be created at app/models/one_time_authentication.rb

And run migration.

bundle exec rails db:migrate

Rewrite FUNCTION_NAMES and CONTEXTS in initializer settings.

Configuration in config/initializers/one_time_password.rb.

FUNCTION_NAMES: Using function_name in OneTimeAuthentication Model enum.

Hash, one of CONTEXTS:

function_name (Symbol) Name each function.
expires_in (ActiveSupport::Duration) Password validity time.
max_authenticate_password_count (Integer) Number of times user can enter password each generated password.
password_length (Integer) Password length. At 6, for example, the password would be 123456.
password_failed_limit (Integer)
password_failed_period (ActiveSupport::Duration)
If you try to authenticate with the wrong password a password_failed_limit times within the time set by password_failed_period, you will not be able to generate a new password.

See example and its sequence diagram

here

OneTimePassword::OneTimeAuthentication's methods.

For more information, see the implementation of OneTimePassword :: OneTimeAuthenticationModel.

Example and its sequence diagram

See sign up exsample.

Sequence diagram.

sequence diagram image

License

The gem is available as open source under the terms of the MIT License.