Userify

Super simple authentication system for Rails, using username, email and password.

Userify focuses on the following 6 conventional actions, and that's all.

( signup / signin / signout / activate / forgot / reset )

Userify is inspired by Clearance http://github.com/thoughtbot/clearance.

Limitations

Currently, Userify is available only when you create a new project. Don't expect it to work in existing projects.

Requirements

Userify requires Haml. However, when you override the default template, you don't have to use Haml.

How to use it?

Here's the setup method.

Install Userify gem, as well as Haml.

sudo gem install haml
sudo gem install userify

In config/environment.rb:

config.gem "haml"
config.gem "userify"
UserifyMailer.sender_address = %("Do Not Reply" <[email protected]>)

Run the generator:

script/generate userify

In config/environments/development.rb and test.rb:

config.action_mailer.default_url_options = { :host => "localhost", :port => 3000 }

In config/environments/production.rb:

config.action_mailer.default_url_options = { :host => "example.com" }

Define root_url to something in your config/routes.rb. Assuming home controller for root:

map.root :controller => 'home'

Create user_controller.rb and home_controller.rb:

script/generate controller user
script/generate controller home

Rewrite user_controller.rb as follows:

class UserController < Userify::UserController
end

Edit home_controller.rb:

class HomeController < ApplicationController
  def index
  end
end

Create app/views/home/index.html.haml:

- if signed_in?
  %p= "Hello #{current_user.name}!"
%h1 Home
%p My app home
- if signed_in?
  %p= link_to 'sign out', signout_url
- else
  %p= link_to 'sign up', signup_url
  %p= link_to 'sign in', signin_url

Rename public/index.html:

mv public/index.html public/_index.html

Run migration and start server:

rake db:migrate
script/server

Now, go to http://localhost:3000/ and check how everything works.

Customize

There are a couple of ways to customize Userify:

1. Override methods in the user_controller subclass.

You might want to override the following methods in your user_controller subclass.

UserController methods:



url_after_signout
url_after_activate
url_after_forgot
url_after_reset

View templates:

app/views/layouts/application.html.haml
app/views/layouts/_error_messages.html.haml
app/views/user/forgot.html.haml
app/views/user/reset.html.haml
app/views/user/.html.haml
app/views/user/.html.haml
app/views/userify_mailer/confirmation.html.erb
app/views/userify_mailer/reset_password.html.erb

2. Unpack Userify gem into vendor/gems and directly edit source.

rake gems:unpack GEM=userify