Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
An authentication and session management framework that eliminates the need for passwords.
branch: master
Failed to load latest commit information.
app
config
db
lib Merge pull request #9 from tfwright/feature/optional-email-config
script Converted to engine
test Small fixes to documentation, email settings
.gitignore
Gemfile
Gemfile.lock Regenerated gemfile.lock, fixed README typo
MIT-LICENSE
README.md
Rakefile Converted to engine
nopassword.gemspec Remove rails 4.0.0.beta dependency

README.md

NoPassword is a simple authentication and session engine that removes the need for passwords. Instead, it uses tokens sent to an email address, similar to most forgot password functionality. These tokens created long-lived sessions that can be tracked and revoked easily.

Ben Brown wrote a great article about password-less logins, the same concept implemented by NoPassword.

NoPassword is structured as a Rails Engine, which you can mount in your routes file:

mount Nopassword::Engine, :at => "/nopassword"

You'll need to install the migrations:

rake nopassword:install:migrations
rake db:migrate

You can set up a signin form with the send_login_email route and a request parameter named email.

If you don't already have email configured, create a config/email.yml with your mail server settings.

defaults: &defaults
  email_server_address: [YOUR MAIL SERVER]
  email_port: [YOUR MAIL PORT]
  email_domain: [YOUR MAIL DOMAIN]
  email_username: [YOUR MAIL USERNAME]

development:
 <<: *defaults

test:
 <<: *defaults

production:
 <<: *defaults

NoPassword uses the Passw3rd library to manage email credentials.

mkdir config/passwords
cd config/passwords
passw3rd -g
passw3rd -e email_password
[Enter your email password]

Finally, you need to download the latest GeoIP database:

cd db
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz && gzip -d GeoLiteCity.dat.gz

NoPassword uses the MIT-LICENSE.

Something went wrong with that request. Please try again.