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.
Maintenance status
I'm not using this gem right now. I have low motivation to maintain it.
Installation
Add this line to your application's Gemfile:
gem "one_time_password"And then execute:
$ bundleOr install it yourself as:
$ gem install one_time_passwordUsage
Run command for an installation.
bundle exec rails g one_time_password:installThe 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:migrateRewrite 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.
License
The gem is available as open source under the terms of the MIT License.
