merb-auth 0.1.0 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +1 -1
- data/README.textile +90 -0
- data/Rakefile +82 -38
- data/TODO +0 -0
- data/lib/merb-auth.rb +4 -72
- metadata +48 -50
- data/README +0 -64
- data/app/controllers/application.rb +0 -4
- data/app/controllers/controller_mixin.rb +0 -150
- data/app/controllers/users.rb +0 -41
- data/app/helpers/application_helper.rb +0 -64
- data/app/views/layout/merb_auth.html.erb +0 -47
- data/app/views/users/login.html.erb +0 -31
- data/app/views/users/signup.html.erb +0 -29
- data/lib/merb-auth/adapter/activerecord.rb +0 -52
- data/lib/merb-auth/adapter/datamapper.rb +0 -78
- data/lib/merb-auth/merbtasks.rb +0 -166
- data/lib/merb-auth/model.rb +0 -80
- data/lib/merb-auth/slicetasks.rb +0 -18
- data/public/stylesheets/master.css +0 -157
- data/spec/controllers/router_spec.rb +0 -29
- data/spec/controllers/session_spec.rb +0 -87
- data/spec/controllers/users_spec.rb +0 -41
- data/spec/controllers/view_helper_spec.rb +0 -27
- data/spec/merb-auth_spec.rb +0 -52
- data/spec/models/ar_user_spec.rb +0 -20
- data/spec/models/dm_user_spec.rb +0 -22
- data/spec/models/shared_user_spec.rb +0 -251
- data/spec/spec_helper.rb +0 -42
data/LICENSE
CHANGED
data/README.textile
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
h1. MerbAuth - Merb Merb::Authentication
|
2
|
+
|
3
|
+
h2. An extensible architecture for authentication
|
4
|
+
|
5
|
+
* Stupidly Simple
|
6
|
+
* Speaks fluent HTTP, even the errors
|
7
|
+
* Pluggable Architecture (so that you can use any authentication algorithms you like)
|
8
|
+
* Cascading Merb::Authentication (if one method fails, another is attempted, then another. When no methods succeed, authentication fails)
|
9
|
+
|
10
|
+
h2. Principles
|
11
|
+
|
12
|
+
# Sessions are authenticated
|
13
|
+
# Just because one method of authentication fails doesn't mean the session, can't be authenticated another way. This is especially true if your application has an external API as well as a public interface.
|
14
|
+
# HTTP has built-in "Errors":http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html which every web-browser (should) know how to speak. If you're application speaks in HTTP Verbs (GET, POST, PUT, DELETE), it should also serve the correct HTTP Errors when things go wrong.
|
15
|
+
|
16
|
+
h2. What is it
|
17
|
+
|
18
|
+
The merb-auth gem is the default implementation of merb-auth-core and merb-auth-more for
|
19
|
+
the default Merb Stack. Included are:
|
20
|
+
|
21
|
+
merb-auth-slice-password # A basic slice that provides everything you need for basic password logins
|
22
|
+
|
23
|
+
Strategies:
|
24
|
+
:default_password_form # Form based login via a "login" field and "password" field
|
25
|
+
:default_basic_auth # Basic authentication
|
26
|
+
|
27
|
+
Mixins:
|
28
|
+
redirect_back # For redirect_back_or functionality
|
29
|
+
salted_user # Automtaically provides the required methods on your user model
|
30
|
+
|
31
|
+
h3. Get merb-auth
|
32
|
+
|
33
|
+
merb-auth is bundled with the merb gem. To get it as stand alone you can get it two ways.
|
34
|
+
|
35
|
+
Gem Style
|
36
|
+
@sudo gem install merb-auth@
|
37
|
+
|
38
|
+
From Source
|
39
|
+
<pre><code>
|
40
|
+
git clone http://github.com/wycats/merb-more.git
|
41
|
+
cd merb-more/merb-auth
|
42
|
+
sudo rake install
|
43
|
+
</code></pre>
|
44
|
+
|
45
|
+
h2. Basic Setup
|
46
|
+
|
47
|
+
h3. Application Setup
|
48
|
+
|
49
|
+
h4. Setup your user
|
50
|
+
|
51
|
+
Setup your User resource
|
52
|
+
$ merb-gen resource users
|
53
|
+
|
54
|
+
Ensure you have a login property
|
55
|
+
property :login, String
|
56
|
+
|
57
|
+
Make sure you have the following in your migrations (if required)
|
58
|
+
crypted_password - String
|
59
|
+
salt - String
|
60
|
+
|
61
|
+
|
62
|
+
h4. Setup your configuration
|
63
|
+
|
64
|
+
Include merb-auth in your application config/init.rb
|
65
|
+
<pre><code>
|
66
|
+
dependency "merb-auth"
|
67
|
+
</code></pre>
|
68
|
+
|
69
|
+
Setup the routing: config/router.rb
|
70
|
+
|
71
|
+
<pre><code>
|
72
|
+
Merb::Router.prepare do
|
73
|
+
merb_auth_routes(:name_prefix => nil, :path_prefix => nil)
|
74
|
+
end
|
75
|
+
</code></pre>
|
76
|
+
|
77
|
+
Protect Your Controller
|
78
|
+
<pre><code>
|
79
|
+
class MyController < Application
|
80
|
+
before :ensure_authenticated
|
81
|
+
|
82
|
+
#...
|
83
|
+
end
|
84
|
+
</pre></code>
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
data/Rakefile
CHANGED
@@ -1,47 +1,91 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
1
|
+
require File.join(File.dirname(__FILE__), "../merb-core/lib/merb-core/version.rb")
|
2
|
+
|
3
|
+
GEM_VERSION = Merb::VERSION
|
4
|
+
GEM_NAME = "merb-auth"
|
5
|
+
require "rake/clean"
|
6
|
+
require "rake/gempackagetask"
|
7
|
+
require 'rubygems/specification'
|
8
|
+
require "spec/rake/spectask"
|
9
|
+
require 'merb-core/tasks/merb_rake_helper'
|
10
|
+
require 'fileutils'
|
11
|
+
include FileUtils
|
12
|
+
|
13
|
+
require "extlib/tasks/release"
|
14
|
+
|
15
|
+
RUBY_FORGE_PROJECT = "merb-auth"
|
16
|
+
PROJECT_URL = "http://merbivore.com"
|
17
|
+
PROJECT_SUMMARY = "merb-auth. The official authentication plugin for merb. Setup for the default stack"
|
18
|
+
PROJECT_DESCRIPTION = PROJECT_SUMMARY
|
19
|
+
|
20
|
+
GEM_AUTHOR = "Daniel Neighman"
|
21
|
+
GEM_EMAIL = "has.sox@gmail.com"
|
22
|
+
|
23
|
+
GEM_NAME = "merb-auth"
|
24
|
+
PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
|
25
|
+
GEM_VERSION = Merb::VERSION + PKG_BUILD
|
26
|
+
|
27
|
+
RELEASE_NAME = "REL #{GEM_VERSION}"
|
28
|
+
|
29
|
+
gems = %w[
|
30
|
+
merb-auth-core merb-auth-more merb-auth-slice-password
|
31
|
+
]
|
32
|
+
|
33
|
+
merb_auth_spec = Gem::Specification.new do |s|
|
34
|
+
s.rubyforge_project = RUBY_FORGE_PROJECT
|
35
|
+
s.name = GEM_NAME
|
36
|
+
s.version = GEM_VERSION
|
37
|
+
s.platform = Gem::Platform::RUBY
|
38
|
+
s.author = GEM_AUTHOR
|
39
|
+
s.email = GEM_EMAIL
|
40
|
+
s.homepage = "http://www.merbivore.com"
|
41
|
+
s.summary = PROJECT_SUMMARY
|
42
|
+
s.description = PROJECT_SUMMARY
|
43
|
+
s.files = %w(LICENSE README.textile Rakefile TODO) + Dir.glob("{lib,spec}/**/*")
|
44
|
+
s.add_dependency "merb-core", "~> #{GEM_VERSION}"
|
45
|
+
gems.each do |gem|
|
46
|
+
s.add_dependency gem, "~> #{GEM_VERSION}"
|
47
|
+
end
|
29
48
|
end
|
30
49
|
|
31
|
-
|
32
|
-
|
50
|
+
CLEAN.include ["**/.*.sw?", "pkg", "lib/*.bundle", "*.gem", "doc/rdoc", ".config", "coverage", "cache"]
|
51
|
+
|
52
|
+
Rake::GemPackageTask.new(merb_auth_spec) do |package|
|
53
|
+
package.gem_spec = merb_auth_spec
|
33
54
|
end
|
34
55
|
|
35
|
-
|
36
|
-
|
37
|
-
|
56
|
+
task :package => ["lib/merb-auth.rb"]
|
57
|
+
desc "Create merb-auth.rb"
|
58
|
+
task "lib/merb-auth.rb" do
|
59
|
+
mkdir_p "lib"
|
60
|
+
File.open("lib/merb-auth.rb","w+") do |file|
|
61
|
+
file.puts "### AUTOMATICALLY GENERATED. DO NOT EDIT!"
|
62
|
+
gems.each do |gem|
|
63
|
+
next if gem == "merb-gen"
|
64
|
+
file.puts "require '#{gem}'"
|
65
|
+
end
|
66
|
+
end
|
38
67
|
end
|
39
68
|
|
40
|
-
|
69
|
+
desc "install the plugin as a gem"
|
70
|
+
task :install do
|
71
|
+
Merb::RakeHelper.install(GEM_NAME, :version => GEM_VERSION)
|
72
|
+
end
|
41
73
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
74
|
+
desc "Uninstall the gem"
|
75
|
+
task :uninstall do
|
76
|
+
Merb::RakeHelper.uninstall(GEM_NAME, :version => GEM_VERSION)
|
77
|
+
end
|
46
78
|
|
79
|
+
desc "Create a gemspec file"
|
80
|
+
task :gemspec do
|
81
|
+
File.open("#{GEM_NAME}.gemspec", "w") do |file|
|
82
|
+
file.puts spec.to_ruby
|
83
|
+
end
|
47
84
|
end
|
85
|
+
|
86
|
+
desc "Run all specs"
|
87
|
+
task :spec do
|
88
|
+
gems.each do |gem|
|
89
|
+
Dir.chdir(gem) { sh "#{Gem.ruby} -S rake spec" }
|
90
|
+
end
|
91
|
+
end
|
data/TODO
ADDED
File without changes
|
data/lib/merb-auth.rb
CHANGED
@@ -1,72 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
require File.join(File.dirname(__FILE__), 'merb-auth', 'model')
|
7
|
-
|
8
|
-
Merb::Plugins.add_rakefiles "merb-auth/merbtasks", "merb-auth/slicetasks"
|
9
|
-
|
10
|
-
# Register the Slice for the current host application
|
11
|
-
Merb::Slices::register(__FILE__)
|
12
|
-
|
13
|
-
# Slice configuration - set this in a before_app_loads callback.
|
14
|
-
# By default a Slice uses its own layout.
|
15
|
-
Merb::Slices::config[:merb_auth][:layout] ||= :merb_auth
|
16
|
-
|
17
|
-
# Use a short name for the user model class. Set this to false to use MerbAuth::User
|
18
|
-
Merb::Slices::config[:merb_auth][:user_class_alias] = "User"
|
19
|
-
|
20
|
-
# All Slice code is expected to be namespaced inside a module
|
21
|
-
module MerbAuth
|
22
|
-
# Slice metadata
|
23
|
-
self.description = "MerbAuth is an user authentication Merb slice!"
|
24
|
-
self.version = "0.1.0"
|
25
|
-
self.author = "ctran@pragmaquest.com"
|
26
|
-
|
27
|
-
# Stub classes loaded hook - runs before LoadClasses BootLoader
|
28
|
-
# right after a slice's classes have been loaded internally.
|
29
|
-
def self.loaded
|
30
|
-
MerbAuth.use_adapter(Merb.orm_generator_scope) if Merb.orm_generator_scope != :merb_default
|
31
|
-
Object.const_set(Merb::Slices::config[:merb_auth][:user_class_alias], MerbAuth::User) if Merb::Slices::config[:merb_auth][:user_class_alias]
|
32
|
-
end
|
33
|
-
|
34
|
-
# Initialization hook - runs before AfterAppLoads BootLoader
|
35
|
-
def self.init
|
36
|
-
end
|
37
|
-
|
38
|
-
# Activation hook - runs after AfterAppLoads BootLoader
|
39
|
-
def self.activate
|
40
|
-
end
|
41
|
-
|
42
|
-
# Deactivation hook - triggered by Merb::Slices.deactivate(Bar)
|
43
|
-
def self.deactivate
|
44
|
-
end
|
45
|
-
|
46
|
-
# Setup routes inside the host application
|
47
|
-
#
|
48
|
-
# @param scope<Merb::Router::Behaviour>
|
49
|
-
# Routes will be added within this scope (namespace). In fact, any
|
50
|
-
# router behaviour is a valid namespace, so you can attach
|
51
|
-
# routes at any level of your router setup.
|
52
|
-
def self.setup_router(scope)
|
53
|
-
scope.match('/login').to(:controller => 'users', :action => 'login').name(:login)
|
54
|
-
scope.match('/logout').to(:controller => 'users', :action => 'logout').name(:logout)
|
55
|
-
scope.match('/signup').to(:controller => 'users', :action => 'signup').name(:signup)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
# Setup the slice layout for MerbAuth
|
60
|
-
#
|
61
|
-
# Use MerbAuth.push_path and MerbAuth.push_app_path
|
62
|
-
# to set paths to merb-auth-level and app-level paths. Example:
|
63
|
-
#
|
64
|
-
# MerbAuth.push_path(:application, MerbAuth.root)
|
65
|
-
# MerbAuth.push_app_path(:application, Merb.root / 'slices' / 'merb-auth')
|
66
|
-
# ...
|
67
|
-
#
|
68
|
-
# Any component path that hasn't been set will default to MerbAuth.root
|
69
|
-
#
|
70
|
-
# Or just call setup_default_structure! to setup a basic Merb MVC structure.
|
71
|
-
MerbAuth.setup_default_structure!
|
72
|
-
end
|
1
|
+
### AUTOMATICALLY GENERATED. DO NOT EDIT!
|
2
|
+
require 'merb-auth-core'
|
3
|
+
require 'merb-auth-more'
|
4
|
+
require 'merb-auth-slice-password'
|
metadata
CHANGED
@@ -1,75 +1,73 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merb-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Daniel Neighman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-10-14 00:00:00 +03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name: merb-
|
16
|
+
name: merb-core
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
20
|
-
- -
|
21
|
+
- - ~>
|
21
22
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.9.
|
23
|
+
version: 0.9.9
|
23
24
|
version:
|
24
|
-
|
25
|
-
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: merb-auth-core
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.9.9
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: merb-auth-more
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.9.9
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: merb-auth-slice-password
|
47
|
+
type: :runtime
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.9.9
|
54
|
+
version:
|
55
|
+
description: merb-auth. The official authentication plugin for merb. Setup for the default stack
|
56
|
+
email: has.sox@gmail.com
|
26
57
|
executables: []
|
27
58
|
|
28
59
|
extensions: []
|
29
60
|
|
30
|
-
extra_rdoc_files:
|
31
|
-
|
32
|
-
- LICENSE
|
61
|
+
extra_rdoc_files: []
|
62
|
+
|
33
63
|
files:
|
34
64
|
- LICENSE
|
35
|
-
- README
|
65
|
+
- README.textile
|
36
66
|
- Rakefile
|
37
|
-
-
|
38
|
-
- lib/merb-auth/adapter
|
39
|
-
- lib/merb-auth/adapter/activerecord.rb
|
40
|
-
- lib/merb-auth/adapter/datamapper.rb
|
41
|
-
- lib/merb-auth/merbtasks.rb
|
42
|
-
- lib/merb-auth/model.rb
|
43
|
-
- lib/merb-auth/slicetasks.rb
|
67
|
+
- TODO
|
44
68
|
- lib/merb-auth.rb
|
45
|
-
|
46
|
-
|
47
|
-
- spec/controllers/session_spec.rb
|
48
|
-
- spec/controllers/users_spec.rb
|
49
|
-
- spec/controllers/view_helper_spec.rb
|
50
|
-
- spec/merb-auth_spec.rb
|
51
|
-
- spec/models
|
52
|
-
- spec/models/ar_user_spec.rb
|
53
|
-
- spec/models/dm_user_spec.rb
|
54
|
-
- spec/models/shared_user_spec.rb
|
55
|
-
- spec/spec_helper.rb
|
56
|
-
- app/controllers
|
57
|
-
- app/controllers/application.rb
|
58
|
-
- app/controllers/controller_mixin.rb
|
59
|
-
- app/controllers/users.rb
|
60
|
-
- app/helpers
|
61
|
-
- app/helpers/application_helper.rb
|
62
|
-
- app/views
|
63
|
-
- app/views/layout
|
64
|
-
- app/views/layout/merb_auth.html.erb
|
65
|
-
- app/views/users
|
66
|
-
- app/views/users/login.html.erb
|
67
|
-
- app/views/users/signup.html.erb
|
68
|
-
- public/javascripts
|
69
|
-
- public/stylesheets
|
70
|
-
- public/stylesheets/master.css
|
71
|
-
has_rdoc: true
|
72
|
-
homepage: http://merb-slices.rubyforge.org/merb-auth/
|
69
|
+
has_rdoc: false
|
70
|
+
homepage: http://www.merbivore.com
|
73
71
|
post_install_message:
|
74
72
|
rdoc_options: []
|
75
73
|
|
@@ -89,10 +87,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
87
|
version:
|
90
88
|
requirements: []
|
91
89
|
|
92
|
-
rubyforge_project:
|
93
|
-
rubygems_version: 1.
|
90
|
+
rubyforge_project: merb-auth
|
91
|
+
rubygems_version: 1.2.0
|
94
92
|
signing_key:
|
95
93
|
specification_version: 2
|
96
|
-
summary:
|
94
|
+
summary: merb-auth. The official authentication plugin for merb. Setup for the default stack
|
97
95
|
test_files: []
|
98
96
|
|
data/README
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
MerbAuth
|
2
|
-
=========
|
3
|
-
|
4
|
-
An user authentication slice for Merb, with support for ActiveRecord and DataMapper.
|
5
|
-
See http://github.com/ctran/merb-skel for an example application that uses this slice
|
6
|
-
|
7
|
-
== Installation:
|
8
|
-
|
9
|
-
> gem install merb
|
10
|
-
> gem install merb-slices
|
11
|
-
|
12
|
-
To use activerecord adapter
|
13
|
-
> gem install activerecord
|
14
|
-
> gem merb_activerecord
|
15
|
-
|
16
|
-
To use datamapper adapter
|
17
|
-
> gem install datamapper
|
18
|
-
> gem install merb_datamapper
|
19
|
-
|
20
|
-
=== config/init.rb
|
21
|
-
|
22
|
-
# add the slice as a regular dependency
|
23
|
-
dependency 'merb-auth'
|
24
|
-
|
25
|
-
=== config/router.rb
|
26
|
-
|
27
|
-
# This will add the following routes /login, /logout and /signup
|
28
|
-
r.slice(:MerbAuth)
|
29
|
-
|
30
|
-
# This will add the following routes /merb-auth/login, /merb-auth/logout and /merb-auth/signup
|
31
|
-
r.add_slice(:MerbAuth)
|
32
|
-
|
33
|
-
# This will add the following routes /user/login, /user/logout and /user/signup
|
34
|
-
r.add_slice(:MerbAuth, 'user') # same as :path => 'user'
|
35
|
-
|
36
|
-
=== Normally you should also run the following rake task:
|
37
|
-
> rake slices:merb_auth:install
|
38
|
-
|
39
|
-
== Customization/Overrides
|
40
|
-
|
41
|
-
By default, the user model class MerbAuth::User is aliased to User.
|
42
|
-
|
43
|
-
You can also put your application-level overrides in:
|
44
|
-
|
45
|
-
host-app/slices/merb-auth/app - controllers, models, views ...
|
46
|
-
|
47
|
-
Templates are located in this order:
|
48
|
-
|
49
|
-
1. host-app/slices/merb-auth/app/views/*
|
50
|
-
2. gems/merb-auth/app/views/*
|
51
|
-
3. host-app/app/views/*
|
52
|
-
|
53
|
-
You can use the host application's layout by configuring the
|
54
|
-
merb-auth slice in a before_app_loads block:
|
55
|
-
|
56
|
-
Merb::Slices.config[:merb_auth] = { :layout => :application }
|
57
|
-
|
58
|
-
By default :merb_auth is used. If you need to override
|
59
|
-
stylesheets or javascripts, just specify your own files in your layout
|
60
|
-
instead/in addition to the ones supplied (if any) in
|
61
|
-
host-app/public/slices/merb-auth.
|
62
|
-
|
63
|
-
In any case don't edit those files directly as they may be clobbered any time
|
64
|
-
rake merb_auth:install is run.
|