h1. Devise Date Restrictable This is a module for "Devise":https://github.com/plataformatec/devise that allows a user account to be restricted by date range. h2. 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
h2. 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.
h3. 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_afterThe "human-readable":http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models name of the @valid_from@ field is available to these translations as @:field@.) h2. 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 h2. Contributing Go for it! I’ll happily accept any sensible pull requests :) h2. 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":mailto:hello@jonpearse.net – I’d love to hear from you!