Devise Date Restrictable
This is a module for Devise that allows a user account to be restricted by date range.
Installation + Setup
Add the following line to your application’s Gemfile:
gem 'devise_date_restrictable'
And then run bundle install
.
Next, you will need to generate an ActiveRecord migration and run that migration.
$ rails generate devise_date_restrictable --model MODEL
rake db:migrate
Finally, add :date_restrictable
to the devise line of your model, for instance:
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :date_restrictable
Usage
This gem adds two DATE
fields to your model: valid_from
and valid_until
. One or both may be specified in order to
restrict a user’s ability to log in either before- or after a particular date, or within a given date range.
If neither is specified, the user will be able to log in without restriction as before.
Note that dates are inclusive, that is:
- if valid_from
is specified, the user will be able to log in after 00:00:00 on that date
- if valid_until
is specified, the user will be able to log in until 23:59:59 on that date
Note that this gem is not timezone-aware, and therefore the server’s local time will be used for everything. I plan to modify this in a later release.
This gem also provides basic validation to ensure that if valid_from
and valid_until
are provided, they make sense
chronologically.
Localisation
This gem provides two localisable strings:
Authentication failure
Shown to the user if their account has been restricted by date. This follows Devise convention, will search the following I18n keys:
devise.failure.[model].account_date_restricted devise.failure.account_date_restricted
Date validation failure
Shown if you attempt to set a user’s valid_from
to be after valid_until
. This follows ActiveRecord error convention, and will search the following I18n keys:
activerecord.errors.models.[model].attributes.valid_until.must_be_on_or_after activerecord.errors.models.[model].must_be_on_or_after activerecord.errors.messages.must_be_on_or_after errors.attributes.valid_until.must_be_on_or_after errors.messages.must_be_on_or_after
The human-readable name of the valid_from
field is available to these translations as :field
.)
Version History
1.0.0 (May 23rd, 2018)
- [fix] added ActiveRecord::Migration version number to migration template
- added basic date validation (it is no longer possible to punch holes in space/time with this gem, sorry)
- added unit tests
- general tidying for release.
0.0.2 (June 6th, 2017)
- removing errant debug output
0.0.1 (May 28th, 2017)
- initial release
Contributing
Go for it! I’ll happily accept any sensible pull requests :)
Obligatory sales pitch
When I’m not hacking at random gems, I’m a freelance web developer specialising in all things front-end, based in the beautiful city of Cardiff, UK.
I’m usually kept fairly busy with project work, but I’m always on the lookout for new people to do cool stuff with. Drop me a line – I’d love to hear from you!