authentasaurus 0.7.3 → 0.8.3

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.
Files changed (128) hide show
  1. data/TODO +3 -0
  2. data/app/controllers/areas_controller.rb +1 -1
  3. data/app/controllers/groups_controller.rb +1 -1
  4. data/app/controllers/permissions_controller.rb +1 -1
  5. data/app/controllers/recoveries_controller.rb +1 -1
  6. data/app/controllers/registrations_controller.rb +1 -1
  7. data/app/controllers/sessions_controller.rb +1 -1
  8. data/app/controllers/user_invitations_controller.rb +1 -1
  9. data/app/controllers/users_controller.rb +1 -1
  10. data/app/controllers/validations_controller.rb +1 -1
  11. data/app/models/area.rb +1 -1
  12. data/app/models/group.rb +1 -1
  13. data/app/models/permission.rb +1 -1
  14. data/app/models/recovery.rb +1 -1
  15. data/app/models/session.rb +1 -1
  16. data/app/models/user_invitation.rb +1 -1
  17. data/app/models/validation.rb +1 -1
  18. data/lib/authentasaurus.rb +22 -36
  19. data/lib/authentasaurus/ac/acts_as_overrider.rb +47 -0
  20. data/lib/authentasaurus/ac/controllers/areas_controller.rb +80 -0
  21. data/lib/authentasaurus/ac/controllers/groups_controller.rb +81 -0
  22. data/lib/authentasaurus/ac/controllers/permissions_controller.rb +81 -0
  23. data/lib/authentasaurus/ac/controllers/recoveries_controller.rb +72 -0
  24. data/lib/authentasaurus/ac/controllers/registrations_controller.rb +45 -0
  25. data/lib/authentasaurus/ac/controllers/sessions_controller.rb +58 -0
  26. data/lib/authentasaurus/ac/controllers/user_invitations_controller.rb +50 -0
  27. data/lib/authentasaurus/ac/controllers/users_controller.rb +80 -0
  28. data/lib/authentasaurus/ac/controllers/validations_controller.rb +53 -0
  29. data/lib/authentasaurus/ac/routing.rb +90 -0
  30. data/lib/authentasaurus/ar/acts_as_authenticatable.rb +113 -0
  31. data/lib/authentasaurus/ar/acts_as_authenticatable_validatable.rb +38 -0
  32. data/lib/authentasaurus/ar/acts_as_overrider.rb +51 -0
  33. data/lib/authentasaurus/ar/authenticatable.rb +66 -0
  34. data/lib/authentasaurus/ar/migrations.rb +173 -0
  35. data/lib/authentasaurus/{models → ar/models}/recovery.rb +3 -3
  36. data/lib/authentasaurus/{models → ar/models}/session.rb +1 -1
  37. data/lib/authentasaurus/{models → ar/models}/user_invitation.rb +1 -1
  38. data/lib/authentasaurus/{models → ar/models}/validation.rb +1 -1
  39. data/lib/authentasaurus/arel/acts_as_authenticatable.rb +72 -0
  40. data/lib/authentasaurus/arel/authenticatable.rb +25 -0
  41. data/lib/authentasaurus/authorization.rb +341 -0
  42. data/lib/authentasaurus/railtie.rb +4 -4
  43. data/lib/generators/authentasaurus/install/templates/initializer.rb +1 -1
  44. data/rdoc/apple-touch-icon.png +0 -0
  45. data/rdoc/classes/Authentasaurus.html +65 -0
  46. data/rdoc/classes/Authentasaurus/Ac.html +72 -0
  47. data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider.html +104 -0
  48. data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider/ClassMethods.html +397 -0
  49. data/rdoc/classes/Authentasaurus/Ac/Routing.html +61 -0
  50. data/rdoc/classes/Authentasaurus/Ac/Routing/InstanceMethods.html +390 -0
  51. data/rdoc/classes/Authentasaurus/Ar.html +77 -0
  52. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable.html +107 -0
  53. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/ClassMethods.html +168 -0
  54. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/InstanceMethods.html +357 -0
  55. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable.html +109 -0
  56. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/ClassMethods.html +113 -0
  57. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/InstanceMethods.html +54 -0
  58. data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider.html +104 -0
  59. data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider/ClassMethods.html +320 -0
  60. data/rdoc/classes/Authentasaurus/Ar/Authenticatable.html +104 -0
  61. data/rdoc/classes/Authentasaurus/Ar/Authenticatable/ClassMethods.html +182 -0
  62. data/rdoc/classes/Authentasaurus/Ar/Migrations.html +63 -0
  63. data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns.html +68 -0
  64. data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns/InstanceMethods.html +106 -0
  65. data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables.html +68 -0
  66. data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables/InstanceMethods.html +703 -0
  67. data/rdoc/classes/Authentasaurus/Arel.html +65 -0
  68. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable.html +107 -0
  69. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/ClassMethods.html +139 -0
  70. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/InstanceMethods.html +113 -0
  71. data/rdoc/classes/Authentasaurus/Arel/Authenticatable.html +105 -0
  72. data/rdoc/classes/Authentasaurus/Arel/Authenticatable/ClassMethods.html +119 -0
  73. data/rdoc/classes/Authentasaurus/Authorization.html +230 -0
  74. data/rdoc/classes/Authentasaurus/Authorization/ActionController.html +63 -0
  75. data/rdoc/classes/Authentasaurus/Authorization/ActionController/ClassMethods.html +263 -0
  76. data/rdoc/classes/Authentasaurus/Authorization/ActionController/InstanceMethods.html +54 -0
  77. data/rdoc/classes/Authentasaurus/Authorization/ActionView.html +54 -0
  78. data/rdoc/classes/Authentasaurus/Authorization/CommonInstanceMethods.html +240 -0
  79. data/rdoc/created.rid +1 -0
  80. data/rdoc/css/main.css +278 -0
  81. data/rdoc/css/panel.css +383 -0
  82. data/rdoc/css/reset.css +53 -0
  83. data/rdoc/favicon.ico +0 -0
  84. data/rdoc/files/README_rdoc.html +366 -0
  85. data/rdoc/files/TODO.html +64 -0
  86. data/rdoc/files/lib/authentasaurus/ac/acts_as_overrider_rb.html +52 -0
  87. data/rdoc/files/lib/authentasaurus/ac/routing_rb.html +60 -0
  88. data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_rb.html +52 -0
  89. data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_validatable_rb.html +52 -0
  90. data/rdoc/files/lib/authentasaurus/ar/acts_as_overrider_rb.html +52 -0
  91. data/rdoc/files/lib/authentasaurus/ar/authenticatable_rb.html +52 -0
  92. data/rdoc/files/lib/authentasaurus/ar/migrations_rb.html +52 -0
  93. data/rdoc/files/lib/authentasaurus/arel/acts_as_authenticatable_rb.html +52 -0
  94. data/rdoc/files/lib/authentasaurus/arel/authenticatable_rb.html +72 -0
  95. data/rdoc/files/lib/authentasaurus/authorization_rb.html +208 -0
  96. data/rdoc/i/arrows.png +0 -0
  97. data/rdoc/i/results_bg.png +0 -0
  98. data/rdoc/i/tree_bg.png +0 -0
  99. data/rdoc/index.html +15 -0
  100. data/rdoc/js/jquery-1.3.2.min.js +19 -0
  101. data/rdoc/js/jquery-effect.js +593 -0
  102. data/rdoc/js/main.js +22 -0
  103. data/rdoc/js/searchdoc.js +628 -0
  104. data/rdoc/panel/index.html +71 -0
  105. data/rdoc/panel/search_index.js +1 -0
  106. data/rdoc/panel/tree.js +1 -0
  107. metadata +92 -44
  108. data/lib/action_controller/authorization.rb +0 -215
  109. data/lib/action_view/authorization.rb +0 -52
  110. data/lib/active_record/acts_as_authenticatable.rb +0 -111
  111. data/lib/active_record/acts_as_authenticatable_validatable.rb +0 -36
  112. data/lib/active_record/authenticatable.rb +0 -64
  113. data/lib/active_resource/acts_as_authenticatable.rb +0 -70
  114. data/lib/active_resource/authenticatable.rb +0 -24
  115. data/lib/authentasaurus/areas_controller.rb +0 -78
  116. data/lib/authentasaurus/groups_controller.rb +0 -79
  117. data/lib/authentasaurus/models/area.rb +0 -21
  118. data/lib/authentasaurus/models/group.rb +0 -19
  119. data/lib/authentasaurus/models/permission.rb +0 -24
  120. data/lib/authentasaurus/permissions_controller.rb +0 -79
  121. data/lib/authentasaurus/recoveries_controller.rb +0 -70
  122. data/lib/authentasaurus/registrations_controller.rb +0 -43
  123. data/lib/authentasaurus/sessions_controller.rb +0 -56
  124. data/lib/authentasaurus/user_invitations_controller.rb +0 -48
  125. data/lib/authentasaurus/users_controller.rb +0 -78
  126. data/lib/authentasaurus/validations_controller.rb +0 -51
  127. data/lib/helpers/migrations.rb +0 -171
  128. data/lib/helpers/routing.rb +0 -87
@@ -0,0 +1,119 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Authentasaurus::Arel::Authenticatable::ClassMethods</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+ <link rel="stylesheet" href="../../../../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../../../../css/main.css" type="text/css" media="screen" />
10
+ <script src="../../../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
11
+ <script src="../../../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../../../../js/main.js" type="text/javascript" charset="utf-8"></script>
13
+ </head>
14
+
15
+ <body>
16
+ <div class="banner">
17
+ <h1>
18
+ <span class="type">Module</span>
19
+ Authentasaurus::Arel::Authenticatable::ClassMethods
20
+
21
+ </h1>
22
+ <ul class="files">
23
+
24
+ <li><a href="../../../../files/lib/authentasaurus/arel/authenticatable_rb.html">lib/authentasaurus/arel/authenticatable.rb</a></li>
25
+
26
+ </ul>
27
+ </div>
28
+ <div id="bodyContent">
29
+ <div id="content">
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ <div class="sectiontitle">Methods</div>
40
+ <dl class="methods">
41
+
42
+ <dt>A</dt>
43
+ <dd>
44
+ <ul>
45
+
46
+ <li><a href="#M000001">authenticatable</a></li>
47
+
48
+ </ul>
49
+ </dd>
50
+
51
+ </dl>
52
+
53
+
54
+
55
+ <div class="sectiontitle">Included Modules</div>
56
+ <ul>
57
+
58
+ <li>
59
+
60
+ <a href="../../Ac/Routing/InstanceMethods.html">Authentasaurus::Ac::Routing::InstanceMethods</a>
61
+
62
+ START:includes
63
+ </li>
64
+
65
+ </ul>
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ <div class="sectiontitle">Instance Public methods</div>
78
+
79
+ <div class="method">
80
+ <div class="title" id="M000001">
81
+
82
+ <a name="M000001"></a><b>authenticatable</b>(*args)
83
+
84
+ </div>
85
+
86
+
87
+
88
+
89
+ <div class="sourcecode">
90
+ <p class="source-link">
91
+ Source: <a href="javascript:toggleSource('M000001_source')" id="l_M000001_source">show</a>
92
+
93
+ | <a href="http://github.com/cousine/Authentasuarus-2/blob/9f35019b78d87fdf386c9d64834171263868b8aa/lib/authentasaurus/arel/authenticatable.rb#L10" target="_blank" class="github_url">on GitHub</a>
94
+
95
+ </p>
96
+ <div id="M000001_source" class="dyn-source">
97
+ <pre><span class="ruby-comment cmt"># File lib/authentasaurus/arel/authenticatable.rb, line 10</span>
98
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">authenticatable</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
99
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">unloadable</span>
100
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">extract_options!</span>
101
+
102
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">site</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:site</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Rails</span>.<span class="ruby-identifier">application</span>.<span class="ruby-identifier">config</span>.<span class="ruby-identifier">authentasaurus</span>[<span class="ruby-identifier">:modules</span>][<span class="ruby-identifier">:remote</span>][<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">underscore</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/_sync/</span>, <span class="ruby-value str">&quot;&quot;</span>).<span class="ruby-identifier">to_sym</span>][<span class="ruby-identifier">:site</span>]
103
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">element_name</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:session_element</span>].<span class="ruby-identifier">try</span>(<span class="ruby-identifier">:to_s</span>) <span class="ruby-operator">||</span> <span class="ruby-constant">Rails</span>.<span class="ruby-identifier">application</span>.<span class="ruby-identifier">config</span>.<span class="ruby-identifier">authentasaurus</span>[<span class="ruby-identifier">:modules</span>][<span class="ruby-identifier">:remote</span>][<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">underscore</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/_sync/</span>, <span class="ruby-value str">&quot;&quot;</span>).<span class="ruby-identifier">to_sym</span>][<span class="ruby-identifier">:session_element</span>]
104
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:sync</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Rails</span>.<span class="ruby-identifier">application</span>.<span class="ruby-identifier">config</span>.<span class="ruby-identifier">authentasaurus</span>[<span class="ruby-identifier">:modules</span>][<span class="ruby-identifier">:remote</span>][<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">underscore</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/_sync/</span>, <span class="ruby-value str">&quot;&quot;</span>).<span class="ruby-identifier">to_sym</span>][<span class="ruby-identifier">:sync</span>]
105
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sync_to</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:sync_to</span>].<span class="ruby-identifier">try</span>(<span class="ruby-identifier">:to_s</span>).<span class="ruby-identifier">try</span>(<span class="ruby-identifier">:camelize</span>).<span class="ruby-identifier">try</span>(<span class="ruby-identifier">:constantize</span>) <span class="ruby-operator">||</span> <span class="ruby-constant">Rails</span>.<span class="ruby-identifier">application</span>.<span class="ruby-identifier">config</span>.<span class="ruby-identifier">authentasaurus</span>[<span class="ruby-identifier">:modules</span>][<span class="ruby-identifier">:remote</span>][<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">underscore</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/_sync/</span>, <span class="ruby-value str">&quot;&quot;</span>).<span class="ruby-identifier">to_sym</span>][<span class="ruby-identifier">:sync_to</span>].<span class="ruby-identifier">camelize</span>.<span class="ruby-identifier">constantize</span>
106
+
107
+
108
+ <span class="ruby-comment cmt"># include authentication methods</span>
109
+ <span class="ruby-identifier">include</span> <span class="ruby-constant">Authentasaurus</span><span class="ruby-operator">::</span><span class="ruby-constant">Arel</span><span class="ruby-operator">::</span><span class="ruby-constant">ActsAsAuthenticatable</span>
110
+ <span class="ruby-keyword kw">end</span></pre>
111
+ </div>
112
+ </div>
113
+
114
+ </div>
115
+
116
+ </div>
117
+ </div>
118
+ </body>
119
+ </html>
@@ -0,0 +1,230 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Authentasaurus::Authorization</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+ <link rel="stylesheet" href="../../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../../css/main.css" type="text/css" media="screen" />
10
+ <script src="../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
11
+ <script src="../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../../js/main.js" type="text/javascript" charset="utf-8"></script>
13
+ </head>
14
+
15
+ <body>
16
+ <div class="banner">
17
+ <h1>
18
+ <span class="type">Module</span>
19
+ Authentasaurus::Authorization
20
+
21
+ </h1>
22
+ <ul class="files">
23
+
24
+ <li><a href="../../files/lib/authentasaurus/authorization_rb.html">lib/authentasaurus/authorization.rb</a></li>
25
+
26
+ </ul>
27
+ </div>
28
+ <div id="bodyContent">
29
+ <div id="content">
30
+
31
+ <div class="description">
32
+ <h1><a href="Authorization.html">Authorization</a> Helpers</h1>
33
+ <p>
34
+ The authorization module provides helpers for restricting access to your
35
+ controllers.
36
+ </p>
37
+ <p>
38
+ Each controller is considered an area in <a
39
+ href="../Authentasaurus.html">Authentasaurus</a>, for example
40
+ UsersController stands for &#8220;users&#8221; area. Each area must be
41
+ defined in the Areas table so <a
42
+ href="../Authentasaurus.html">Authentasaurus</a> can control access to it.
43
+ </p>
44
+ <p>
45
+ <a href="../Authentasaurus.html">Authentasaurus</a> provides a simple rake
46
+ task to define areas automatically:
47
+ </p>
48
+ <pre>
49
+ rake authentasaurus:create_areas
50
+ </pre>
51
+ <h2>Restricting Access</h2>
52
+ <p>
53
+ You can restrict access to any controller using one of the following class
54
+ methods on your controller.
55
+ </p>
56
+ <p>
57
+ At login, <a href="../Authentasaurus.html">Authentasaurus</a> will load the
58
+ permissions of the group the user belongs to in the session and will use
59
+ them to authorize access to the area.
60
+ </p>
61
+ <p>
62
+ There are three levels of restriction in <a
63
+ href="../Authentasaurus.html">Authentasaurus</a>, login, read and write;
64
+ with the exception of login, read and write don&#8217;t have any logic
65
+ behind them; they are defined using the Permission and are only
66
+ symbolically named i.e.: you can use read instead of write and vice versa
67
+ it only depends on how you use them.
68
+ </p>
69
+ <h3>Restricting access to logged in users</h3>
70
+ <p>
71
+ You can restrict access to an area to logged in users only using the <a
72
+ href="Authorization/ActionController/ClassMethods.html#M000011">ActionController::ClassMethods#require_login</a>
73
+ class method.
74
+ </p>
75
+ <p>
76
+ Consider the following example restricting access to the pages controller
77
+ to only logged in users:
78
+ </p>
79
+ <pre>
80
+ class PagesController &lt; ActionController::Base
81
+ require_login
82
+ ...
83
+ end
84
+ </pre>
85
+ <p>
86
+ You can also specify which actions to restrict:
87
+ </p>
88
+ <pre>
89
+ require_login :new, :create, :index
90
+ </pre>
91
+ <p>
92
+ <a href="../Authentasaurus.html">Authentasaurus</a> will automatically
93
+ redirect users to the sign-in page if they try accessing the area while
94
+ they are not logged in. Once the user logs in he/she is redirected back to
95
+ his/her original destination unless you explicitly skip that behaviour:
96
+ </p>
97
+ <pre>
98
+ require_login :skip_request =&gt; true
99
+ </pre>
100
+ <h3>Restricting access according to permissions</h3>
101
+ <p>
102
+ Unlike the login restriction, permissions restrictions checks if the user
103
+ is logged in and has the permission to access the area.
104
+ </p>
105
+ <p>
106
+ Users get permissions from their parent group and permissions are
107
+ dynamically set in the database.
108
+ </p>
109
+ <p>
110
+ <a href="../Authentasaurus.html">Authentasaurus</a> currently supports only
111
+ two permissions, read and write, both permissions are symbolically named,
112
+ they have no meaning.
113
+ </p>
114
+ <h4>Restricting access to users with read permission</h4>
115
+ <pre>
116
+ class PagesController &lt; ActionController::Base
117
+ require_read
118
+ ...
119
+ end
120
+ </pre>
121
+ <p>
122
+ <a
123
+ href="Authorization/ActionController/ClassMethods.html#M000013">ActionController::ClassMethods#require_read</a>
124
+ takes the same options as <a
125
+ href="Authorization/ActionController/ClassMethods.html#M000011">ActionController::ClassMethods#require_login</a>
126
+ and <a
127
+ href="Authorization/ActionController/ClassMethods.html#M000012">ActionController::ClassMethods#require_write</a>
128
+ </p>
129
+ <h4>Restricting access to users with write permission</h4>
130
+ <pre>
131
+ class PagesController &lt; ActionController::Base
132
+ require_write
133
+ ...
134
+ end
135
+ </pre>
136
+ <p>
137
+ <a
138
+ href="Authorization/ActionController/ClassMethods.html#M000012">ActionController::ClassMethods#require_write</a>
139
+ takes the same options as <a
140
+ href="Authorization/ActionController/ClassMethods.html#M000011">ActionController::ClassMethods#require_login</a>
141
+ and <a
142
+ href="Authorization/ActionController/ClassMethods.html#M000013">ActionController::ClassMethods#require_read</a>
143
+ </p>
144
+ <h2>Checking if the user is logged in in actions or views</h2>
145
+ <p>
146
+ Along with the class helpers, <a
147
+ href="../Authentasaurus.html">Authentasaurus</a> includes a helper to check
148
+ if the user is logged in inside any of your actions:
149
+ </p>
150
+ <pre>
151
+ is_logged_in?
152
+ </pre>
153
+ <p>
154
+ Check <a
155
+ href="Authorization/CommonInstanceMethods.html#M000009">ActionController::CommonInstanceMethods#is_logged_in?</a>
156
+ for more information.
157
+ </p>
158
+ <h2>Checking permissions in actions or views</h2>
159
+ <p>
160
+ You can also check if the logged in user has a certain permission.
161
+ </p>
162
+ <p>
163
+ Consider the following example to check if the logged in user has read
164
+ permission on the current area
165
+ </p>
166
+ <pre>
167
+ has?(:read)
168
+ </pre>
169
+ <p>
170
+ You can also check permissions on an area while in another, for example to
171
+ check if the current user has write permission on the users area:
172
+ </p>
173
+ <pre>
174
+ has?(:write,:users)
175
+ </pre>
176
+ <p>
177
+ Check <a
178
+ href="Authorization/CommonInstanceMethods.html#M000006">ActionController::CommonInstanceMethods#has?</a>
179
+ for more information.
180
+ </p>
181
+ <h2>Retrieving the current user in actions or views</h2>
182
+ <p>
183
+ To get the logged in user you can use the following helper:
184
+ </p>
185
+ <pre>
186
+ current_user
187
+ </pre>
188
+ <p>
189
+ Check <a
190
+ href="Authorization/CommonInstanceMethods.html#M000005">ActionController::CommonInstanceMethods#current_user</a>
191
+ for more information.
192
+ </p>
193
+
194
+ </div>
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+ <div class="sectiontitle">Classes and Modules</div>
211
+ <ul>
212
+
213
+ <li><span class="type">MODULE</span> <a href="Authorization/ActionController.html">Authentasaurus::Authorization::ActionController</a></li>
214
+
215
+ <li><span class="type">MODULE</span> <a href="Authorization/ActionView.html">Authentasaurus::Authorization::ActionView</a></li>
216
+
217
+ <li><span class="type">MODULE</span> <a href="Authorization/CommonInstanceMethods.html">Authentasaurus::Authorization::CommonInstanceMethods</a></li>
218
+
219
+ </ul>
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+ </div>
228
+ </div>
229
+ </body>
230
+ </html>
@@ -0,0 +1,63 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Authentasaurus::Authorization::ActionController</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+ <link rel="stylesheet" href="../../../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../../../css/main.css" type="text/css" media="screen" />
10
+ <script src="../../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
11
+ <script src="../../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../../../js/main.js" type="text/javascript" charset="utf-8"></script>
13
+ </head>
14
+
15
+ <body>
16
+ <div class="banner">
17
+ <h1>
18
+ <span class="type">Module</span>
19
+ Authentasaurus::Authorization::ActionController
20
+
21
+ </h1>
22
+ <ul class="files">
23
+
24
+ <li><a href="../../../files/lib/authentasaurus/authorization_rb.html">lib/authentasaurus/authorization.rb</a></li>
25
+
26
+ </ul>
27
+ </div>
28
+ <div id="bodyContent">
29
+ <div id="content">
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ <div class="sectiontitle">Classes and Modules</div>
46
+ <ul>
47
+
48
+ <li><span class="type">MODULE</span> <a href="ActionController/ClassMethods.html">Authentasaurus::Authorization::ActionController::ClassMethods</a></li>
49
+
50
+ <li><span class="type">MODULE</span> <a href="ActionController/InstanceMethods.html">Authentasaurus::Authorization::ActionController::InstanceMethods</a></li>
51
+
52
+ </ul>
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+ </div>
61
+ </div>
62
+ </body>
63
+ </html>
@@ -0,0 +1,263 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Authentasaurus::Authorization::ActionController::ClassMethods</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+ <link rel="stylesheet" href="../../../../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../../../../css/main.css" type="text/css" media="screen" />
10
+ <script src="../../../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
11
+ <script src="../../../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../../../../js/main.js" type="text/javascript" charset="utf-8"></script>
13
+ </head>
14
+
15
+ <body>
16
+ <div class="banner">
17
+ <h1>
18
+ <span class="type">Module</span>
19
+ Authentasaurus::Authorization::ActionController::ClassMethods
20
+
21
+ </h1>
22
+ <ul class="files">
23
+
24
+ <li><a href="../../../../files/lib/authentasaurus/authorization_rb.html">lib/authentasaurus/authorization.rb</a></li>
25
+
26
+ </ul>
27
+ </div>
28
+ <div id="bodyContent">
29
+ <div id="content">
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ <div class="sectiontitle">Methods</div>
40
+ <dl class="methods">
41
+
42
+ <dt>R</dt>
43
+ <dd>
44
+ <ul>
45
+
46
+ <li><a href="#M000011">require_login</a>,</li>
47
+
48
+ <li><a href="#M000013">require_read</a>,</li>
49
+
50
+ <li><a href="#M000012">require_write</a></li>
51
+
52
+ </ul>
53
+ </dd>
54
+
55
+ </dl>
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+ <div class="sectiontitle">Instance Public methods</div>
70
+
71
+ <div class="method">
72
+ <div class="title" id="M000011">
73
+
74
+ <a name="M000011"></a><b>require_login</b>(*attrs)
75
+
76
+ </div>
77
+
78
+ <div class="description">
79
+ <p>
80
+ Requires the user to login before accessing the actions specified
81
+ </p>
82
+ <p>
83
+ <b>ex:</b> Tells <a href="../../../Authentasaurus.html">Authentasaurus</a>
84
+ that the action destroy requires login and that <a
85
+ href="../../../Authentasaurus.html">Authentasaurus</a> shouldn&#8217;t
86
+ store the request in the session (typically for logout actions).
87
+ </p>
88
+ <pre>
89
+ require_login :destroy, :skip_request =&gt; true
90
+ </pre>
91
+ <p>
92
+ <b>Options</b>
93
+ </p>
94
+ <pre>
95
+ :skip_request - skips saving the original request (to redirect to after login)
96
+ :user_model - if defined, authentasaurus will use that model instead of the default &quot;User&quot;
97
+ :if - specifies a method, proc or string to call to determine if the authorization should occur
98
+ :unless - specifies a method, proc or string to call to determine if the authorization should not occur
99
+ </pre>
100
+
101
+ </div>
102
+
103
+
104
+
105
+
106
+ <div class="sourcecode">
107
+ <p class="source-link">
108
+ Source: <a href="javascript:toggleSource('M000011_source')" id="l_M000011_source">show</a>
109
+
110
+ | <a href="http://github.com/cousine/Authentasuarus-2/blob/9f35019b78d87fdf386c9d64834171263868b8aa/lib/authentasaurus/authorization.rb#L183" target="_blank" class="github_url">on GitHub</a>
111
+
112
+ </p>
113
+ <div id="M000011_source" class="dyn-source">
114
+ <pre><span class="ruby-comment cmt"># File lib/authentasaurus/authorization.rb, line 183</span>
115
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">require_login</span> (<span class="ruby-operator">*</span><span class="ruby-identifier">attrs</span>)
116
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">extract_options!</span>.<span class="ruby-identifier">symbolize_keys</span>
117
+ <span class="ruby-identifier">attrs</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">flatten</span>
118
+
119
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">empty?</span>
120
+ <span class="ruby-identifier">before_filter</span> <span class="ruby-identifier">:only</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">attrs</span>, <span class="ruby-identifier">:if</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:if</span>], <span class="ruby-identifier">:unless</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:unless</span>] <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">controller</span><span class="ruby-operator">|</span>
121
+ <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">instance_eval</span> {<span class="ruby-identifier">check_logged_in</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-identifier">:skip_request</span>].<span class="ruby-identifier">nil?</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:user_model</span>]}
122
+ <span class="ruby-keyword kw">end</span>
123
+ <span class="ruby-keyword kw">else</span>
124
+ <span class="ruby-identifier">before_filter</span> <span class="ruby-identifier">:if</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:if</span>], <span class="ruby-identifier">:unless</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:unless</span>] <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
125
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">instance_eval</span> {<span class="ruby-identifier">check_logged_in</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-identifier">:skip_request</span>].<span class="ruby-identifier">nil?</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:user_model</span>]}
126
+ <span class="ruby-keyword kw">end</span>
127
+ <span class="ruby-keyword kw">end</span>
128
+ <span class="ruby-keyword kw">end</span></pre>
129
+ </div>
130
+ </div>
131
+
132
+ </div>
133
+
134
+ <div class="method">
135
+ <div class="title" id="M000013">
136
+
137
+ <a name="M000013"></a><b>require_read</b>(*attrs)
138
+
139
+ </div>
140
+
141
+ <div class="description">
142
+ <p>
143
+ Requires the user to have a read permission to that area to access the
144
+ actions specified
145
+ </p>
146
+ <p>
147
+ <b>ex:</b> Tells <a href="../../../Authentasaurus.html">Authentasaurus</a>
148
+ that the action show_user requires login and read permission.
149
+ </p>
150
+ <pre>
151
+ require_read :show_user
152
+ </pre>
153
+ <p>
154
+ <b>Options</b>
155
+ </p>
156
+ <pre>
157
+ :skip_request - skips saving the original request (to redirect to after login)
158
+ :user_model - if defined, authentasaurus will use that model instead of the default &quot;User&quot;
159
+ :if - specifies a method, proc or string to call to determine if the authorization should occur
160
+ :unless - specifies a method, proc or string to call to determine if the authorization should not occur
161
+ </pre>
162
+
163
+ </div>
164
+
165
+
166
+
167
+
168
+ <div class="sourcecode">
169
+ <p class="source-link">
170
+ Source: <a href="javascript:toggleSource('M000013_source')" id="l_M000013_source">show</a>
171
+
172
+ | <a href="http://github.com/cousine/Authentasuarus-2/blob/9f35019b78d87fdf386c9d64834171263868b8aa/lib/authentasaurus/authorization.rb#L239" target="_blank" class="github_url">on GitHub</a>
173
+
174
+ </p>
175
+ <div id="M000013_source" class="dyn-source">
176
+ <pre><span class="ruby-comment cmt"># File lib/authentasaurus/authorization.rb, line 239</span>
177
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">require_read</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">attrs</span>)
178
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">extract_options!</span>.<span class="ruby-identifier">symbolize_keys</span>
179
+ <span class="ruby-identifier">attrs</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">flatten</span>
180
+
181
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">empty?</span>
182
+ <span class="ruby-identifier">before_filter</span> <span class="ruby-identifier">:only</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">attrs</span>, <span class="ruby-identifier">:if</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:if</span>], <span class="ruby-identifier">:unless</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:unless</span>] <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">controller</span><span class="ruby-operator">|</span>
183
+ <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">instance_eval</span> { <span class="ruby-identifier">check_read_permissions</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-identifier">:skip_request</span>].<span class="ruby-identifier">nil?</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:user_model</span>] }
184
+ <span class="ruby-keyword kw">end</span>
185
+ <span class="ruby-keyword kw">else</span>
186
+ <span class="ruby-identifier">before_filter</span> <span class="ruby-identifier">:if</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:if</span>], <span class="ruby-identifier">:unless</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:unless</span>] <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
187
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">instance_eval</span> { <span class="ruby-identifier">check_read_permissions</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-identifier">:skip_request</span>].<span class="ruby-identifier">nil?</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:user_model</span>] }
188
+ <span class="ruby-keyword kw">end</span>
189
+ <span class="ruby-keyword kw">end</span>
190
+ <span class="ruby-keyword kw">end</span></pre>
191
+ </div>
192
+ </div>
193
+
194
+ </div>
195
+
196
+ <div class="method">
197
+ <div class="title" id="M000012">
198
+
199
+ <a name="M000012"></a><b>require_write</b>(*attrs)
200
+
201
+ </div>
202
+
203
+ <div class="description">
204
+ <p>
205
+ Requires the user to have a write permission to that area to access the
206
+ actions specified
207
+ </p>
208
+ <p>
209
+ <b>ex:</b> Tells <a href="../../../Authentasaurus.html">Authentasaurus</a>
210
+ that the actions create_user and delete_user requires login and write
211
+ permission.
212
+ </p>
213
+ <pre>
214
+ require_write :create_user, :delete_user
215
+ </pre>
216
+ <p>
217
+ <b>Options</b>
218
+ </p>
219
+ <pre>
220
+ :skip_request - skips saving the original request (to redirect to after login)
221
+ :user_model - if defined, authentasaurus will use that model instead of the default &quot;User&quot;
222
+ :if - specifies a method, proc or string to call to determine if the authorization should occur
223
+ :unless - specifies a method, proc or string to call to determine if the authorization should not occur
224
+ </pre>
225
+
226
+ </div>
227
+
228
+
229
+
230
+
231
+ <div class="sourcecode">
232
+ <p class="source-link">
233
+ Source: <a href="javascript:toggleSource('M000012_source')" id="l_M000012_source">show</a>
234
+
235
+ | <a href="http://github.com/cousine/Authentasuarus-2/blob/9f35019b78d87fdf386c9d64834171263868b8aa/lib/authentasaurus/authorization.rb#L211" target="_blank" class="github_url">on GitHub</a>
236
+
237
+ </p>
238
+ <div id="M000012_source" class="dyn-source">
239
+ <pre><span class="ruby-comment cmt"># File lib/authentasaurus/authorization.rb, line 211</span>
240
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">require_write</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">attrs</span>)
241
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">extract_options!</span>.<span class="ruby-identifier">symbolize_keys</span>
242
+ <span class="ruby-identifier">attrs</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">flatten</span>
243
+
244
+
245
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">empty?</span>
246
+ <span class="ruby-identifier">before_filter</span> <span class="ruby-identifier">:only</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">attrs</span>, <span class="ruby-identifier">:if</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:if</span>], <span class="ruby-identifier">:unless</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:unless</span>] <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">controller</span><span class="ruby-operator">|</span>
247
+ <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">instance_eval</span> { <span class="ruby-identifier">check_write_permissions</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-identifier">:skip_request</span>].<span class="ruby-identifier">nil?</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:user_model</span>] }
248
+ <span class="ruby-keyword kw">end</span>
249
+ <span class="ruby-keyword kw">else</span>
250
+ <span class="ruby-identifier">before_filter</span> <span class="ruby-identifier">:if</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:if</span>], <span class="ruby-identifier">:unless</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:unless</span>] <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
251
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">instance_eval</span> {<span class="ruby-identifier">check_write_permissions</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-identifier">:skip_request</span>].<span class="ruby-identifier">nil?</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:user_model</span>]}
252
+ <span class="ruby-keyword kw">end</span>
253
+ <span class="ruby-keyword kw">end</span>
254
+ <span class="ruby-keyword kw">end</span></pre>
255
+ </div>
256
+ </div>
257
+
258
+ </div>
259
+
260
+ </div>
261
+ </div>
262
+ </body>
263
+ </html>