Skip to content

Commit

Permalink
Devise CAS working already. Niiiiice.
Browse files Browse the repository at this point in the history
  • Loading branch information
Evan Light committed Oct 22, 2010
1 parent 76dce7b commit ea8fe42
Show file tree
Hide file tree
Showing 22 changed files with 278 additions and 30 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -0,0 +1 @@
.rvmrc
5 changes: 1 addition & 4 deletions Gemfile
Expand Up @@ -6,10 +6,9 @@ gem 'rack', '1.1.0'
gem 'rails', '2.3.8'
gem 'sinatra', '1.0', :require => false
gem 'pg'
gem 'devise'
gem 'devise', '1.0.8'
gem 'devise_cas_authenticatable'

gem 'ngmoco-cache-money', '0.2.10'
gem 'daemons'
gem 'delayed_job', '1.8.5'
gem 'fastercsv'
Expand All @@ -31,8 +30,6 @@ gem "haml"
gem "compass"
gem "tinder"

gem "rubycas-server"

group :deploy do
gem 'capistrano-ext', '1.2.1'
end
Expand Down
28 changes: 3 additions & 25 deletions Gemfile.lock
Expand Up @@ -18,11 +18,9 @@ GEM
http_connection
uuidtools
xml-simple
bcrypt-ruby (2.1.2)
bitly (0.5.3)
crack (>= 0.1.4)
httparty (>= 0.5.2)
builder (2.1.2)
capistrano (2.5.19)
highline
net-scp (>= 1.0.0)
Expand Down Expand Up @@ -50,9 +48,8 @@ GEM
daemons (1.1.0)
database_cleaner (0.5.2)
delayed_job (1.8.5)
devise (1.1.3)
bcrypt-ruby (~> 2.1.2)
warden (~> 0.10.7)
devise (1.0.8)
warden (~> 0.10.3)
devise_cas_authenticatable (1.0.0.alpha4)
devise (>= 1.0.6)
rubycas-client (~> 2.1.0)
Expand All @@ -67,8 +64,6 @@ GEM
flog (2.5.0)
ruby_parser (~> 2.0)
sexp_processor (~> 3.0)
gettext (2.1.0)
locale (>= 2.0.5)
haml (3.0.22)
highline (1.6.1)
hirb (0.3.4)
Expand All @@ -82,12 +77,9 @@ GEM
json_pure (1.4.6)
koala (0.8.0)
linecache (0.43)
locale (2.0.5)
main (4.2.0)
arrayfields (>= 4.7.4)
fattr (>= 2.1.0)
markaby (0.7.1)
builder (>= 2.0.0)
metric_fu (1.5.1)
Saikuro (>= 1.1.0)
activesupport (>= 2.0.0)
Expand All @@ -112,15 +104,8 @@ GEM
net-ssh-gateway (1.0.1)
net-ssh (>= 1.99.1)
newrelic_rpm (2.13.1)
ngmoco-cache-money (0.2.10)
activerecord (>= 2.2.0)
activesupport (>= 2.2.0)
oauth (0.4.3)
pg (0.9.0)
picnic (0.8.1.20100201)
activesupport
markaby
rack
progressbar (0.9.0)
rack (1.1.0)
rack-test (0.5.6)
Expand Down Expand Up @@ -171,11 +156,6 @@ GEM
sexp_processor (~> 3.0)
rubycas-client (2.1.0)
activesupport
rubycas-server (0.7.999999.20100202)
activerecord
activesupport
gettext
picnic (>= 0.8.1.20100201)
rubyforge (2.0.4)
json_pure (>= 1.1.7)
sexp_processor (3.0.5)
Expand Down Expand Up @@ -218,7 +198,7 @@ DEPENDENCIES
daemons
database_cleaner
delayed_job (= 1.8.5)
devise
devise (= 1.0.8)
devise_cas_authenticatable
factory_girl
fastercsv
Expand All @@ -230,7 +210,6 @@ DEPENDENCIES
mini_magick
mocha
newrelic_rpm (= 2.13.1)
ngmoco-cache-money (= 0.2.10)
oauth
pg
rack (= 1.1.0)
Expand All @@ -241,7 +220,6 @@ DEPENDENCIES
rspec-rails
ruby-debug
ruby-prof
rubycas-server
shoulda (= 2.10.3)
sinatra (= 1.0)
timecop
Expand Down
6 changes: 6 additions & 0 deletions app/controllers/home_controller.rb
@@ -0,0 +1,6 @@
class HomeController < ApplicationController
layout "default"

def index
end
end
2 changes: 2 additions & 0 deletions app/helpers/home_helper.rb
@@ -0,0 +1,2 @@
module HomeHelper
end
3 changes: 3 additions & 0 deletions app/models/agent.rb
@@ -0,0 +1,3 @@
class Agent < ActiveRecord::Base
devise :cas_authenticatable
end
1 change: 1 addition & 0 deletions app/views/home/index.html.erb
@@ -0,0 +1 @@
Ohai
13 changes: 13 additions & 0 deletions app/views/layouts/default.html.erb
@@ -0,0 +1,13 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Ohai</title>
<body>
<p class="notice"><%= flash[:notice] %></p>
<p class="alert"><%= flash[:alert] %></p>

<%= yield %>
</body>
</html>
15 changes: 15 additions & 0 deletions config/boot.rb
Expand Up @@ -106,5 +106,20 @@ def read_environment_rb
end
end

class Rails::Boot
def run
load_initializer

Rails::Initializer.class_eval do
def load_gems
@bundler_loaded ||= Bundler.require :default, Rails.env
end
end

Rails::Initializer.run(:set_load_path)
end
end


# All that for this:
Rails.boot!
4 changes: 3 additions & 1 deletion config/environments/development.rb
Expand Up @@ -13,5 +13,7 @@
config.action_view.debug_rjs = true
config.action_controller.perform_caching = false

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
config.action_mailer.raise_delivery_errors = false
107 changes: 107 additions & 0 deletions config/initializers/devise.rb
@@ -0,0 +1,107 @@
# Use this hook to configure devise mailer, warden hooks and so forth. The first
# four configuration values can also be set straight in your models.
Devise.setup do |config|
config.cas_base_url = "https://localhost:9001"
# Configure the e-mail address which will be shown in DeviseMailer.
#
config.mailer_sender = "evan@tripledogdare.net"

# Configure the content type of DeviseMailer mails (defaults to text/html")
# config.mailer_content_type = "text/plain"

# ==> Configuration for :authenticatable
# Invoke `rake secret` and use the printed value to setup a pepper to generate
# the encrypted password. By default no pepper is used.
# config.pepper = "rake secret output"

# Configure how many times you want the password is reencrypted. Default is 10.
# config.stretches = 10

# Define which will be the encryption algorithm. Supported algorithms are :sha1
# (default), :sha512 and :bcrypt. Devise also supports encryptors from others
# authentication tools as :clearance_sha1, :authlogic_sha512 (then you should set
# stretches above to 20 for default behavior) and :restful_authentication_sha1
# (then you should set stretches to 10, and copy REST_AUTH_SITE_KEY to pepper)
# config.encryptor = :sha1

# Configure which keys are used when authenticating an user. By default is
# just :email. You can configure it to use [:username, :subdomain], so for
# authenticating an user, both parameters are required. Remember that those
# parameters are used only when authenticating and not when retrieving from
# session. If you need permissions, you should implement that in a before filter.
# config.authentication_keys = [ :email ]

# The realm used in Http Basic Authentication
# config.http_authentication_realm = "Application"

# ==> Configuration for :confirmable
# The time you want give to your user to confirm his account. During this time
# he will be able to access your application without confirming. Default is nil.
# config.confirm_within = 2.days

# ==> Configuration for :rememberable
# The time the user will be remembered without asking for credentials again.
# config.remember_for = 2.weeks

# ==> Configuration for :timeoutable
# The time you want to timeout the user session without activity. After this
# time the user will be asked for credentials again.
# config.timeout_in = 10.minutes

# ==> Configuration for :lockable
# Number of authentication tries before locking an account.
# config.maximum_attempts = 20

# Defines which strategy will be used to unlock an account.
# :email = Sends an unlock link to the user email
# :time = Reanables login after a certain ammount of time (see :unlock_in below)
# :both = enables both strategies
# config.unlock_strategy = :both

# Time interval to unlock the account if :time is enabled as unlock_strategy.
# config.unlock_in = 1.hour

# ==> Configuration for :token_authenticatable
# Defines name of the authentication token params key
# config.token_authentication_key = :auth_token

# ==> General configuration
# Load and configure the ORM. Supports :active_record (default), :mongo_mapper
# (requires mongo_ext installed) and :data_mapper (experimental).
# require 'devise/orm/mongo_mapper'
# config.orm = :mongo_mapper

# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "sessions/users/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = true

# By default, devise detects the role accessed based on the url. So whenever
# accessing "/users/sign_in", it knows you are accessing an User. This makes
# routes as "/sign_in" not possible, unless you tell Devise to use the default
# scope, setting true below.
# config.use_default_scope = true

# Configure the default scope used by Devise. By default it's the first devise
# role declared in your routes.
# config.default_scope = :user

# If you want to use other strategies, that are not (yet) supported by Devise,
# you can configure them inside the config.warden block. The example below
# allows you to setup OAuth, using http://github.com/roman/warden_oauth
#
# config.warden do |manager|
# manager.oauth(:twitter) do |twitter|
# twitter.consumer_secret = <YOUR CONSUMER SECRET>
# twitter.consumer_key = <YOUR CONSUMER KEY>
# twitter.options :site => 'http://twitter.com'
# end
# manager.default_strategies.unshift :twitter_oauth
# end

# Configure default_url_options if you are using dynamic segments in :path_prefix
# for devise_for.
# config.default_url_options do
# { :locale => I18n.locale }
# end
end
35 changes: 35 additions & 0 deletions config/locales/devise.en.yml
@@ -0,0 +1,35 @@
en:
devise:
sessions:
link: 'Sign in'
signed_in: 'Signed in successfully.'
signed_out: 'Signed out successfully.'
unauthenticated: 'You need to sign in or sign up before continuing.'
unconfirmed: 'You have to confirm your account before continuing.'
locked: 'Your account is locked.'
invalid: 'Invalid email or password.'
invalid_token: 'Invalid authentication token.'
timeout: 'Your session expired, please sign in again to continue.'
inactive: 'Your account was not activated yet.'
passwords:
link: 'Forgot password?'
send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.'
updated: 'Your password was changed successfully. You are now signed in.'
confirmations:
link: "Didn't receive confirmation instructions?"
send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.'
confirmed: 'Your account was successfully confirmed. You are now signed in.'
registrations:
link: 'Sign up'
signed_up: 'You have signed up successfully. If enabled, a confirmation was sent to your e-mail.'
updated: 'You updated your account successfully.'
destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.'
unlocks:
link: "Didn't receive unlock instructions?"
send_instructions: 'You will receive an email with instructions about how to unlock your account in a few minutes.'
unlocked: 'Your account was successfully unlocked. You are now signed in.'
mailer:
confirmation_instructions: 'Confirmation instructions'
reset_password_instructions: 'Reset password instructions'
unlock_instructions: 'Unlock Instructions'

21 changes: 21 additions & 0 deletions config/preinitializer.rb
@@ -0,0 +1,21 @@
begin
require "rubygems"
require "bundler"
rescue LoadError
raise "Could not load the bundler gem. Install it with `gem install bundler`."
end

if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
"Run `gem install bundler` to upgrade."
end

begin
# Set up load paths for all bundled gems
ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
Bundler.setup
rescue Bundler::GemNotFound
raise RuntimeError, "Bundler couldn't find some gems." +
"Did you run `bundle install`?"
end

3 changes: 3 additions & 0 deletions config/routes.rb
@@ -1,4 +1,5 @@
ActionController::Routing::Routes.draw do |map|
map.devise_for :agents
# The priority is based upon order of creation: first created -> highest priority.

# Sample of regular route:
Expand Down Expand Up @@ -40,4 +41,6 @@
# consider removing or commenting them out if you're using named routes and resources.
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

map.root :controller => 'home'
end
12 changes: 12 additions & 0 deletions db/migrate/20101022221801_create_agents.rb
@@ -0,0 +1,12 @@
class CreateAgents < ActiveRecord::Migration
def self.up
create_table :agents do |t|
t.cas_authenticatable
t.timestamps
end
end

def self.down
drop_table :agents
end
end
20 changes: 20 additions & 0 deletions db/schema.rb
@@ -0,0 +1,20 @@
# This file is auto-generated from the current state of the database. Instead of editing this file,
# please use the migrations feature of Active Record to incrementally modify your database, and
# then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your database schema. If you need
# to create the application database on another system, you should be using db:schema:load, not running
# all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended to check this file into your version control system.

ActiveRecord::Schema.define(:version => 20101022221801) do

create_table "agents", :force => true do |t|
t.string "username"
t.datetime "created_at"
t.datetime "updated_at"
end

end
1 change: 1 addition & 0 deletions log/development.log
@@ -0,0 +1 @@
# Logfile created on Fri Oct 22 18:59:28 -0400 2010

0 comments on commit ea8fe42

Please sign in to comment.