rack-cas-rails 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +12 -8
- data/lib/rack-cas-rails.rb +1 -0
- data/lib/rack-cas-rails/controllers.rb +61 -0
- data/lib/rack-cas-rails/version.rb +3 -0
- metadata +6 -5
- data/lib/rack-cas/rails/controllers.rb +0 -37
- data/lib/rack-cas/rails/helpers.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0818a3cce11d21fc1c56fe4b1e70fefbb52c1cc
|
4
|
+
data.tar.gz: bad76f891b70a7c54228b4e6001623f6a5e7caef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6549563c5255ef7d4864b66566774744dd58ef2e104f3620325599fb4cd720e625b9fe6fe5d0ef6e36a85c1f85de7fe34abf70eaae2ae5b2a2073f8b116d17f2
|
7
|
+
data.tar.gz: 79dd96b5624f71039b3facbfe1aed8bb39c7b9898a827345f753211e8aee422fb1a590ffb913e289cd17bdecb1b598cb71e06a6be6365c4c1a6fa31ba93fef4d
|
data/README.md
CHANGED
@@ -40,8 +40,8 @@ end
|
|
40
40
|
```
|
41
41
|
|
42
42
|
In the simplest scenario, you'll want your entire application protected by authentication. That is, unless a user has authenticated,
|
43
|
-
he can do nothing. To do so, add the following ```before_action``` callback to your ApplicationController
|
44
|
-
```app/controllers/application_ronctoller.rb```):
|
43
|
+
he can do nothing. To do so, add the following ```before_action``` callback to your ApplicationController
|
44
|
+
(file ```app/controllers/application_ronctoller.rb```):
|
45
45
|
|
46
46
|
```ruby
|
47
47
|
class ApplicationController < ActionController::Base
|
@@ -73,11 +73,12 @@ authenticated session, which user does it belong to?
|
|
73
73
|
|
74
74
|
Various Rails authentication gems makes the currently authenticated user available as an object via the ```current_user``` helper
|
75
75
|
method. The rack-cas-rails gem does not provide this functionality. But you can look to gems such as
|
76
|
-
[OmniAuth](https://github.com/intridea/omniauth), [Devise](https://github.com/plataformatec/devise),
|
77
|
-
to provide it.
|
76
|
+
[OmniAuth](https://github.com/intridea/omniauth), [Devise](https://github.com/plataformatec/devise),
|
77
|
+
[Authlogic](https://github.com/binarylogic/authlogic) and so on to provide it.
|
78
78
|
|
79
|
-
But, assuming your application has
|
80
|
-
|
79
|
+
But, assuming your application has a ActiveRecord model named ```User``` where its accmpanying database table containing user records
|
80
|
+
which are uniquely identifiable by a ```username``` attribute, you can add the following code to your ApplictionController to
|
81
|
+
provide your application with the ```current_user``` method:
|
81
82
|
|
82
83
|
```ruby
|
83
84
|
class ApplicationController
|
@@ -93,13 +94,15 @@ class ApplicationController
|
|
93
94
|
end
|
94
95
|
```
|
95
96
|
|
97
|
+
*Note the user records should be the same ones available to CASinoApp for authentication.*
|
98
|
+
|
96
99
|
Lastly, change your ```views/layouts/application.html.erb``` to be as follows:
|
97
100
|
|
98
101
|
```erb
|
99
102
|
<!DOCTYPE html>
|
100
103
|
<html>
|
101
104
|
<head>
|
102
|
-
<title>
|
105
|
+
<title>MyGreatApplication</title>
|
103
106
|
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
|
104
107
|
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
|
105
108
|
<%= csrf_meta_tags %>
|
@@ -125,7 +128,7 @@ Lastly, change your ```views/layouts/application.html.erb``` to be as follows:
|
|
125
128
|
|
126
129
|
To recap, you'll have integrated your Rails application with a CAS-compliant server by making these changes to your application:
|
127
130
|
|
128
|
-
1. Add config.rack_cas.server_url to config/application.rb
|
131
|
+
1. Add ```config.rack_cas.server_url``` to config/application.rb
|
129
132
|
2. Add ```before_action :authenticate!``` to ApplicationController
|
130
133
|
3. Add ```current_user``` method to ApplictionController
|
131
134
|
4. Add simple navigational header to make use of ```current_user``` and the ```login_url```/```logout_url``` helpers
|
@@ -140,3 +143,4 @@ As such, you can expect the following behavior:
|
|
140
143
|
|
141
144
|
A big *thank-you* goes out the teams and contributors behind [CASinoApp](http://rbcas.com) and
|
142
145
|
[rack-cas](https://github.com/biola/rack-cas), without whom this gem will not be possible.
|
146
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
require "rack-cas-rails/controllers"
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module RackCASRails
|
2
|
+
end
|
3
|
+
|
4
|
+
##
|
5
|
+
# Augment Rails' ApplicationController class with authentication related methods.
|
6
|
+
|
7
|
+
class ApplicationController < ActionController::Base
|
8
|
+
|
9
|
+
##
|
10
|
+
# When invoked, will force authenticate. Most likely to be invoked as a before_action.
|
11
|
+
|
12
|
+
def authenticate!
|
13
|
+
authenticated? or render(:file => "public/401.html", :status => :unauthorized) # HTTP 401
|
14
|
+
end
|
15
|
+
|
16
|
+
##
|
17
|
+
# Determines whether the current request belongs to a session that is authenticated or not.
|
18
|
+
# @return [Bool] True if current request belongs to an authenticated session, false otherwise.
|
19
|
+
|
20
|
+
def authenticated?
|
21
|
+
request.session["cas"] && request.session["cas"]["user"]
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# Renders the CAS login URL with re-direct back to some URL.
|
26
|
+
# @param service_url [String] Optional url to redirect to after authentication.
|
27
|
+
# @return [String] The CAS login URL.
|
28
|
+
|
29
|
+
def login_url(service_url=request.url)
|
30
|
+
url = URI(Rails.application.config.rack_cas.server_url)
|
31
|
+
url.path = "/login"
|
32
|
+
url.query = "service=#{service_url || request.url}"
|
33
|
+
url.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
##
|
37
|
+
# Renders the CAS logout URL with re-direct back to some URL (e.g. the root URL). The logout path is "/logout",
|
38
|
+
# which is actually undocumented. I had to find out by looking into the source code of the rack-cas gem.
|
39
|
+
# @param service_url [String] Optional url to redirect to after authentication.
|
40
|
+
# @return [String] The CAS logout URL.
|
41
|
+
|
42
|
+
def logout_url(service_url=request.url)
|
43
|
+
url = URI(request.url)
|
44
|
+
url.path = "/logout"
|
45
|
+
url.query = "service=#{service_url || request.url}"
|
46
|
+
url.to_s
|
47
|
+
end
|
48
|
+
|
49
|
+
helper_method :authenticate!
|
50
|
+
helper_method :authenticated?
|
51
|
+
helper_method :login_url
|
52
|
+
helper_method :logout_url
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
##
|
57
|
+
# All actions in controllers derived from this controller require authentication.
|
58
|
+
|
59
|
+
class RackCASRails::AuthenticatedController < ApplicationController
|
60
|
+
before_action :authenticate!
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-cas-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Brazil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack-cas
|
@@ -54,9 +54,10 @@ extra_rdoc_files: []
|
|
54
54
|
files:
|
55
55
|
- LICENSE
|
56
56
|
- README.md
|
57
|
-
- lib/rack-cas
|
58
|
-
- lib/rack-cas
|
59
|
-
|
57
|
+
- lib/rack-cas-rails.rb
|
58
|
+
- lib/rack-cas-rails/controllers.rb
|
59
|
+
- lib/rack-cas-rails/version.rb
|
60
|
+
homepage: https://github.com/bitaxis/rack-cas-rails.git
|
60
61
|
licenses:
|
61
62
|
- MIT
|
62
63
|
metadata: {}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module RackCAS
|
2
|
-
module Rails
|
3
|
-
|
4
|
-
##
|
5
|
-
# All actions in controllers derived from this controller require authentication.
|
6
|
-
|
7
|
-
class AuthenticatedController < ApplicationController
|
8
|
-
before_action :authenticate!
|
9
|
-
end
|
10
|
-
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
##
|
15
|
-
# Augment Rails' ApplicationController class with authentication related methods.
|
16
|
-
|
17
|
-
class ApplicationController
|
18
|
-
|
19
|
-
##
|
20
|
-
# When invoked, will force authenticate. Most likely to be invoked as a before_action.
|
21
|
-
|
22
|
-
def authenticate!
|
23
|
-
authenticated? or render(:file => "public/401.html", :status => :unauthorized) # HTTP 401
|
24
|
-
end
|
25
|
-
|
26
|
-
##
|
27
|
-
# Determines whether the current request belongs to a session that is authenticated or not.
|
28
|
-
# @return [Bool] True if current request belongs to an authenticated session, false otherwise.
|
29
|
-
|
30
|
-
def authenticated?
|
31
|
-
request.session["cas"] && request.session["cas"]["user"]
|
32
|
-
end
|
33
|
-
|
34
|
-
helper_method :authenticate!
|
35
|
-
helper_method :authenticated?
|
36
|
-
|
37
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module RackCAS
|
2
|
-
module Rails
|
3
|
-
end
|
4
|
-
end
|
5
|
-
|
6
|
-
##
|
7
|
-
# Augment the ApplicationHelper module with these methods.
|
8
|
-
|
9
|
-
module ApplicationHelper
|
10
|
-
|
11
|
-
##
|
12
|
-
# Renders the CAS login URL with re-direct back to some URL.
|
13
|
-
# @param service_url [String] Optional url to redirect to after authentication.
|
14
|
-
# @return [String] The CAS login URL.
|
15
|
-
|
16
|
-
def login_url(service_url=request.url)
|
17
|
-
url = URI(Rails.application.config.rack_cas.server_url)
|
18
|
-
url.path = "/login"
|
19
|
-
url.query = "service=#{service_url || request.url}"
|
20
|
-
url.to_s
|
21
|
-
end
|
22
|
-
|
23
|
-
##
|
24
|
-
# Renders the CAS logout URL with re-direct back to some URL (e.g. the root URL). The logout path is "/logout",
|
25
|
-
# which is actually undocumented. I had to find out by looking into the source code of the rack-cas gem.
|
26
|
-
# @param service_url [String] Optional url to redirect to after authentication.
|
27
|
-
# @return [String] The CAS logout URL.
|
28
|
-
|
29
|
-
def logout_url(service_url=request.url)
|
30
|
-
url = URI(request.url)
|
31
|
-
url.path = "/logout"
|
32
|
-
url.query = "service=#{service_url || request.url}"
|
33
|
-
url.to_s
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|