Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Basic Sinatra authentication module for use with monk + ohm

branch: master

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README.markdown

Sinatra Security

This gem just provides you with the standard authentication mechanisms you would expect from your typical app.

Read the full documentation at http://labs.sinefunc.com/sinatra-security/doc.

Basic usage

# taken from examples/classic.rb

get "/" do
  haml :home
end

get "/public" do
  "Hello public world"
end

get "/private" do
  require_login

  "Hello private world <a href='/logout'>Logout</a>"
end

get "/login" do
  @user = User.new

  haml :login
end

Some advanced stuff you might want to do

require 'sinatra'
require 'sinatra/security'
require 'ohm'

# we set a different attribute name here. 
# the default used is :email, but we can choose whatever we want.
Sinatra::Security::LoginField.attr_name :login

class User < Ohm::Model
  include Sinatra::Security::User
end

user = User.create(:login => "quentin", :password => "test")
user == User.authenticate("quentin", "test")
# => true

# in our sinatra context...
# now let's secure a chunk of our pages
require_login '/admin/users'

get '/admin/users/:id' do |id|
  # do something here
end

get '/admin/posts' do
  # posts list here
end

# we can also do basic atomic authorization checks for our objects

get '/admin/posts/:id/edit' do |id|
  post = Post[id]
  ensure_current_user post.author # does a `halt 404` if this fails

  # now we proceed as normal, if the author is indeed the curerent user
end

# a quick demo of how you might want to logout
get '/logout' do
  logout!
  redirect '/'
end

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 Cyril David. See LICENSE for details.

Something went wrong with that request. Please try again.