ateam-merb-auth-old 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +44 -0
- data/README +212 -0
- data/Rakefile +50 -0
- data/TODO +14 -0
- data/activerecord_generators/ma_migration/ma_migration_generator.rb +41 -0
- data/activerecord_generators/ma_migration/templates/schema/migrations/%time_stamp%_add_ma_user.rb +21 -0
- data/app/controllers/application.rb +7 -0
- data/app/controllers/sessions.rb +3 -0
- data/app/controllers/users.rb +3 -0
- data/app/helpers/application_helper.rb +64 -0
- data/app/mailers/user_mailer.rb +24 -0
- data/app/mailers/views/user_mailer/activation.text.erb +1 -0
- data/app/mailers/views/user_mailer/forgot_password.text.erb +5 -0
- data/app/mailers/views/user_mailer/signup.text.erb +7 -0
- data/app/views/layout/merb_auth.html.erb +16 -0
- data/app/views/sessions/new.html.erb +13 -0
- data/app/views/users/new.html.erb +21 -0
- data/datamapper_generators/ma_migration/ma_migration_generator.rb +38 -0
- data/datamapper_generators/ma_migration/templates/schema/migrations/add_ma_user.rb +21 -0
- data/lib/ateam-merb-auth-old.rb +1 -0
- data/lib/merb-auth.rb +184 -0
- data/lib/merb-auth/adapters/activerecord/init.rb +26 -0
- data/lib/merb-auth/adapters/activerecord/map.rb +44 -0
- data/lib/merb-auth/adapters/activerecord/model.rb +81 -0
- data/lib/merb-auth/adapters/common.rb +161 -0
- data/lib/merb-auth/adapters/datamapper/init.rb +28 -0
- data/lib/merb-auth/adapters/datamapper/map.rb +35 -0
- data/lib/merb-auth/adapters/datamapper/model.rb +72 -0
- data/lib/merb-auth/adapters/map.rb +0 -0
- data/lib/merb-auth/adapters/sequel/init.rb +26 -0
- data/lib/merb-auth/adapters/sequel/map.rb +36 -0
- data/lib/merb-auth/adapters/sequel/model.rb +86 -0
- data/lib/merb-auth/controller/controller.rb +113 -0
- data/lib/merb-auth/controller/sessions_base.rb +41 -0
- data/lib/merb-auth/controller/users_base.rb +58 -0
- data/lib/merb-auth/initializer.rb +47 -0
- data/lib/merb-auth/merbtasks.rb +168 -0
- data/lib/merb-auth/slicetasks.rb +102 -0
- data/plugins/forgotten_password/app/controllers/passwords.rb +90 -0
- data/plugins/forgotten_password/app/models/user.rb +52 -0
- data/plugins/forgotten_password/app/views/passwords/edit.html.erb +9 -0
- data/plugins/forgotten_password/app/views/passwords/new.html.erb +4 -0
- data/plugins/forgotten_password/forgotten_password.rb +6 -0
- data/plugins/forgotten_password/init.rb +8 -0
- data/plugins/forgotten_password/spec/controller_spec.rb +236 -0
- data/plugins/forgotten_password/spec/model_spec.rb +52 -0
- data/plugins/forgotten_password/spec/spec_helper.rb +36 -0
- data/public/javascripts/master.js +0 -0
- data/public/stylesheets/master.css +2 -0
- data/spec/controllers/plugins/test_plugin.rb +17 -0
- data/spec/controllers/sessions_spec.rb +118 -0
- data/spec/controllers/users_spec.rb +119 -0
- data/spec/mailers/user_mailer_spec.rb +75 -0
- data/spec/merb_auth_spec.rb +231 -0
- data/spec/models/ar_model_spec.rb +50 -0
- data/spec/models/common_spec.rb +0 -0
- data/spec/models/model_spec.rb +23 -0
- data/spec/models/sq_model_spec.rb +50 -0
- data/spec/shared_specs/shared_model_spec.rb +445 -0
- data/spec/spec_helper.rb +114 -0
- data/spec/spec_helpers/helpers.rb +18 -0
- data/spec/spec_helpers/valid_model_hashes.rb +10 -0
- data/stubs/app/controllers/application.rb +2 -0
- data/stubs/app/controllers/main.rb +2 -0
- data/stubs/app/mailers/views/activation.text.erb +1 -0
- data/stubs/app/mailers/views/signup.text.erb +7 -0
- data/stubs/app/views/sessions/new.html.erb +14 -0
- data/stubs/app/views/users/new.html.erb +18 -0
- metadata +120 -0
data/LICENSE
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
Copyright (c) 2008 Daniel Neighman
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
22
|
+
Based on the Rails plugin by Rick Olsen
|
23
|
+
|
24
|
+
Licence of restful_authentication
|
25
|
+
|
26
|
+
Copyright (c) 2005 Rick Olson
|
27
|
+
|
28
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
29
|
+
this software and associated documentation files (the "Software"), to deal in
|
30
|
+
the Software without restriction, including without limitation the rights to
|
31
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
32
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
33
|
+
subject to the following conditions:
|
34
|
+
|
35
|
+
The above copyright notice and this permission notice shall be included in all
|
36
|
+
copies or substantial portions of the Software.
|
37
|
+
|
38
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
39
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
40
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
41
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
42
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
43
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
44
|
+
=======
|
data/README
ADDED
@@ -0,0 +1,212 @@
|
|
1
|
+
MerbAuth
|
2
|
+
=====================
|
3
|
+
|
4
|
+
A slice for the Merb framework.
|
5
|
+
|
6
|
+
MerbAuth is an authentication framework for the Merb Web Framework.
|
7
|
+
|
8
|
+
Currently DataMapper and ActiveRecord supportis available. It should be pretty easy to add your own.
|
9
|
+
|
10
|
+
MerbAuth provides your model with a mixin that gives your model all the required behavior
|
11
|
+
and links it to the controllers.
|
12
|
+
|
13
|
+
As an example. In your normal applications model directory create your user model.
|
14
|
+
|
15
|
+
class User
|
16
|
+
include MerbAuth::Adapter::DataMapper
|
17
|
+
include MerbAuth::Adapter::DataMapper::DefaultModelSetup
|
18
|
+
end
|
19
|
+
|
20
|
+
This will give the User class the required behavior and provide access to the class through
|
21
|
+
MerbAuth[:user] for other slice authors. To save key presses a handy constant is available
|
22
|
+
MA.
|
23
|
+
|
24
|
+
So using the MA constant you can declare your class like this
|
25
|
+
|
26
|
+
class Person
|
27
|
+
include MA::Adapter::DataMapper
|
28
|
+
include MerbAuth::Adapter::DataMapper::DefaultModelSetup
|
29
|
+
end
|
30
|
+
|
31
|
+
And in your custom slice, get access to the user class with MA[:user]
|
32
|
+
|
33
|
+
If you don't want to use the default setup for options. i.e. you want to see the properties in your model, change the
|
34
|
+
validations or whatever, you can just enter them into your model. To find out the required properties and validations that the
|
35
|
+
default uses use the rake task to get a print out that you can paste into your model.
|
36
|
+
|
37
|
+
rake slices:merb_auth:dm:setup # Datamapper defaults
|
38
|
+
|
39
|
+
rake slices:merb_auth:ar:setup # ActiveRecord defaults
|
40
|
+
|
41
|
+
===Useful Helpers
|
42
|
+
|
43
|
+
The normal merb-auth helpers are available for your application, but also there is some consistent
|
44
|
+
helpers for other slice authors. Most notably is the controller helper
|
45
|
+
|
46
|
+
:current_ma_user also aliased as :current_person, or :current_user or whatever your user class name is.
|
47
|
+
|
48
|
+
=== Controllers
|
49
|
+
|
50
|
+
The controllers that drive MerbAuth are always named MA::Users, and MA::Sessions
|
51
|
+
|
52
|
+
These are then mapped to appropriately named routes.
|
53
|
+
|
54
|
+
=== Options
|
55
|
+
|
56
|
+
See notes after installation instructions
|
57
|
+
|
58
|
+
------------------------------------------------------------------------------
|
59
|
+
|
60
|
+
Instructions for installation:
|
61
|
+
|
62
|
+
=== Quick Install
|
63
|
+
# config/init.rb
|
64
|
+
dependency "merb-slices"
|
65
|
+
dependency "merb-auth"
|
66
|
+
|
67
|
+
# router
|
68
|
+
r.add_slice(:MerbAuth, "path/to/mount/at")
|
69
|
+
|
70
|
+
# Boot strap to your app
|
71
|
+
rake slices:merb_auth:install
|
72
|
+
|
73
|
+
|
74
|
+
=== Long Install INstructions
|
75
|
+
|
76
|
+
# add the slice as a regular dependency
|
77
|
+
|
78
|
+
dependency 'merb-auth'
|
79
|
+
|
80
|
+
# if needed, configure which slices to load and in which order
|
81
|
+
|
82
|
+
Merb::Plugins.config[:merb_slices] = { :queue => ["MerbAuth", ...] }
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
=== Configure Your Router
|
87
|
+
|
88
|
+
In config/router.rb you need to activate your brand new MerbAuth Slice. You can do this a number of ways.
|
89
|
+
|
90
|
+
The easiest way is like this:
|
91
|
+
|
92
|
+
r.add_slices
|
93
|
+
|
94
|
+
If you'd like to specify MerbAuth for mounting or other routeing options given in slices
|
95
|
+
|
96
|
+
r.add_slice(:MerbAuth)
|
97
|
+
|
98
|
+
By default this will mount the slice at /merb-auth. So your login url will be at
|
99
|
+
|
100
|
+
/merb-auth/login
|
101
|
+
|
102
|
+
If you'd like to specify a different mount point in your application do it like this.
|
103
|
+
|
104
|
+
r.add_slice(:MerbAuth, 'authentcation')
|
105
|
+
|
106
|
+
Your login url will now be /authentication/login, your signup url will be at /authentication/users/new
|
107
|
+
|
108
|
+
Alternatively you can just mount merb-auth directly onto your application. (Recommended)
|
109
|
+
|
110
|
+
r.add_slice(:MerbAuth, :path => "", :default_routes => false)
|
111
|
+
|
112
|
+
If you'd like to set more options, I suggest you look up the merb-slices documentation.
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
=== Install your slice
|
117
|
+
|
118
|
+
You need to install the slice.
|
119
|
+
|
120
|
+
rake slices:merb_auth:install
|
121
|
+
|
122
|
+
=== Configuring your install.
|
123
|
+
|
124
|
+
If you don't have any configuration applied some simple defaults will be assumed. You configure your installation
|
125
|
+
by writing it to the config/slices.yml file
|
126
|
+
|
127
|
+
==== Login Field
|
128
|
+
|
129
|
+
By default merb-auth uses the "email" field to login. If you want to use a different field, even one of your own,
|
130
|
+
you can use the
|
131
|
+
\:login_field: jid
|
132
|
+
|
133
|
+
option. This example will set the "jid" field to be the default field used for logging in. One thing to bear in mind is
|
134
|
+
that this needs to actually be a field in the database.
|
135
|
+
|
136
|
+
==== Routing options
|
137
|
+
|
138
|
+
\:route_path_model: first choice for model route path. defaults to "users" (used to make single_model_path and
|
139
|
+
|
140
|
+
\:route_path_session: first choice for the sessions route path. Defaults to "sessions"
|
141
|
+
|
142
|
+
|
143
|
+
===== Named routes for the MA::Users resource
|
144
|
+
|
145
|
+
\:user:
|
146
|
+
\:new: # ||= :"new_#{single_model_name}"
|
147
|
+
\:show: # ||= :"#{single_model_name}"
|
148
|
+
\:edit: # ||= :"edit_#{single_model_name}"
|
149
|
+
\:delete: # ||= :"delete_#{single_model_name}"
|
150
|
+
\:index: # ||= :"#{plural_model_path}"
|
151
|
+
\:activate: # ||= :"#{single_model_name}_activation"
|
152
|
+
|
153
|
+
|
154
|
+
A named route called :login, :logout and :signup are also included.
|
155
|
+
|
156
|
+
|
157
|
+
=== Including activation emails for account verification
|
158
|
+
|
159
|
+
To include activation email to your uses use the
|
160
|
+
|
161
|
+
\:use_activation: true option
|
162
|
+
|
163
|
+
|
164
|
+
To not use it either leave it out, or set it false like this
|
165
|
+
|
166
|
+
\:use_activation: false
|
167
|
+
|
168
|
+
|
169
|
+
If this option is turned off, it will just automatically complete the relevant fields
|
170
|
+
to have an activated user. This way, if you decide later that you'd like to include activation
|
171
|
+
then the previously signed up users are already fully active and ready to fit into the new behavior :)
|
172
|
+
|
173
|
+
There is also the subjects that you can setup for your emails
|
174
|
+
|
175
|
+
\:from_email
|
176
|
+
\:welcome_subject: # ||= "Welcome"
|
177
|
+
\:activation_subject: # ||= "Please Activate Your Account"
|
178
|
+
|
179
|
+
------------------------------------------------------------------------------
|
180
|
+
|
181
|
+
=== Override the Views
|
182
|
+
|
183
|
+
You can override the views MerbAuth provides. Lets face it. They're pretty basic.
|
184
|
+
|
185
|
+
To do this, you need to edit the files in the bootstrapped directories in your application.
|
186
|
+
|
187
|
+
Merb.root/slices/merb-auth/app/views/
|
188
|
+
|
189
|
+
==== Example
|
190
|
+
|
191
|
+
To change the login form you'd head on over to
|
192
|
+
|
193
|
+
Merb.root/slices/merb-auth/app/views/users/new.html.(haml|erb)
|
194
|
+
|
195
|
+
And put in your own view there. The same is available for any of the components of merbful authentication
|
196
|
+
|
197
|
+
You can also add your own overrides to the controllers similarly.
|
198
|
+
|
199
|
+
=== Using Your own Layout
|
200
|
+
|
201
|
+
To setup merbful authentication to use your own layout use a before_app_loads block.
|
202
|
+
|
203
|
+
==== Example
|
204
|
+
|
205
|
+
Merb::Slices.config[:merb_auth] = { :layout => :application }
|
206
|
+
|
207
|
+
=== Migrations
|
208
|
+
|
209
|
+
There is a migration task for merb-auth to generate your migrations. Make sure you have use_orm selected so that
|
210
|
+
it knows which generator to use. Then from your host application
|
211
|
+
|
212
|
+
rake slices:merb_auth:generate_migration
|
data/Rakefile
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake/gempackagetask'
|
3
|
+
require 'spec/rake/spectask'
|
4
|
+
require 'merb-core/version'
|
5
|
+
require 'merb-core/test/tasks/spectasks'
|
6
|
+
require 'merb-core/tasks/merb_rake_helper'
|
7
|
+
|
8
|
+
NAME = "a-team-merb-auth"
|
9
|
+
AUTHOR = "Merb Core"
|
10
|
+
EMAIL = "has.sox@gmail.com"
|
11
|
+
HOMEPAGE = "http://merbivore.com/"
|
12
|
+
SUMMARY = "Merb Slice that provides authentication"
|
13
|
+
GEM_VERSION = "0.1.0"
|
14
|
+
|
15
|
+
spec = Gem::Specification.new do |s|
|
16
|
+
s.rubyforge_project = 'merb'
|
17
|
+
s.name = NAME
|
18
|
+
s.version = GEM_VERSION
|
19
|
+
s.platform = Gem::Platform::RUBY
|
20
|
+
s.has_rdoc = true
|
21
|
+
s.extra_rdoc_files = ["README", "LICENSE", 'TODO']
|
22
|
+
s.summary = SUMMARY
|
23
|
+
s.description = s.summary
|
24
|
+
s.author = AUTHOR
|
25
|
+
s.email = EMAIL
|
26
|
+
s.homepage = HOMEPAGE
|
27
|
+
s.add_dependency('merb-slices', '>= 0.9.4')
|
28
|
+
s.add_dependency('merb-mailer', '>= 0.9.4')
|
29
|
+
s.add_dependency('merb_helpers', '>= 0.9.4')
|
30
|
+
s.require_path = 'lib'
|
31
|
+
s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,spec,app,public,stubs,activerecord_generators,datamapper_generators,plugins}/**/*")
|
32
|
+
end
|
33
|
+
|
34
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
35
|
+
pkg.gem_spec = spec
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "Install MerbAuth as a gem"
|
39
|
+
task :install => [:package] do
|
40
|
+
sh %{sudo gem install pkg/#{NAME}-#{GEM_VERSION} --no-update-sources}
|
41
|
+
end
|
42
|
+
|
43
|
+
namespace :jruby do
|
44
|
+
|
45
|
+
desc "Run :package and install the resulting .gem with jruby"
|
46
|
+
task :install => :package do
|
47
|
+
sh %{#{sudo} jruby -S gem install #{install_home} pkg/#{NAME}-#{GEM_VERSION}.gem --no-rdoc --no-ri}
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/TODO
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
TODO:
|
2
|
+
|
3
|
+
- Fix MerbAuth.description and MerbAuth.version
|
4
|
+
- Fix LICENSE with your name
|
5
|
+
- Fix Rakefile with your name and contact info
|
6
|
+
- Add your code to lib/merb_auth.rb
|
7
|
+
- Add your Merb rake tasks to lib/merb_auth/merbtasks.rb
|
8
|
+
|
9
|
+
Remove anything that you don't need:
|
10
|
+
|
11
|
+
- app/controllers/main.rb MerbAuth::Main controller
|
12
|
+
- app/views/layout/merb_auth.html.erb
|
13
|
+
- spec/controllers/main_spec.rb controller specs
|
14
|
+
- public/* any public files
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class MaMigrationGenerator < Merb::GeneratorBase
|
2
|
+
|
3
|
+
attr_accessor :plural_name, :single_name, :time_stamp
|
4
|
+
|
5
|
+
def initialize(runtime_args, runtime_options = {})
|
6
|
+
@base = File.dirname(__FILE__)
|
7
|
+
super
|
8
|
+
@name = args.shift
|
9
|
+
end
|
10
|
+
|
11
|
+
def manifest
|
12
|
+
record do |m|
|
13
|
+
@m = m
|
14
|
+
|
15
|
+
@time_stamp = Time.now.utc.strftime("%Y%m%d%H%M%S")
|
16
|
+
@table_name = @name.split("::").last.snake_case.singularize.pluralize
|
17
|
+
|
18
|
+
@assigns = {
|
19
|
+
:time_stamp => @time_stamp,
|
20
|
+
:class_name => @name,
|
21
|
+
:table_name => @table_name
|
22
|
+
}
|
23
|
+
|
24
|
+
copy_dirs
|
25
|
+
copy_files
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
def banner
|
32
|
+
<<-EOS
|
33
|
+
Creates a migration for merb-auth user model
|
34
|
+
|
35
|
+
USAGE: #{$0} #{spec.name} name"
|
36
|
+
EOS
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
data/activerecord_generators/ma_migration/templates/schema/migrations/%time_stamp%_add_ma_user.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
class AddMaUser < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table "<%= table_name %>", :force => true do |t|
|
4
|
+
t.column :login, :string
|
5
|
+
t.column :email, :string
|
6
|
+
t.column :crypted_password, :string, :limit => 40
|
7
|
+
t.column :salt, :string, :limit => 40
|
8
|
+
t.column :created_at, :datetime
|
9
|
+
t.column :updated_at, :datetime
|
10
|
+
t.column :remember_token, :string
|
11
|
+
t.column :remember_token_expires_at, :datetime
|
12
|
+
t.column :activation_code, :string, :limit => 40
|
13
|
+
t.column :activated_at, :datetime
|
14
|
+
t.column :password_reset_key, :string
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.down
|
19
|
+
drop_table "<%= table_name %>"
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Merb
|
2
|
+
module MerbAuth
|
3
|
+
module ApplicationHelper
|
4
|
+
|
5
|
+
# @param *segments<Array[#to_s]> Path segments to append.
|
6
|
+
#
|
7
|
+
# @return <String>
|
8
|
+
# A path relative to the public directory, with added segments.
|
9
|
+
def image_path(*segments)
|
10
|
+
public_path_for(:image, *segments)
|
11
|
+
end
|
12
|
+
|
13
|
+
# @param *segments<Array[#to_s]> Path segments to append.
|
14
|
+
#
|
15
|
+
# @return <String>
|
16
|
+
# A path relative to the public directory, with added segments.
|
17
|
+
def javascript_path(*segments)
|
18
|
+
public_path_for(:javascript, *segments)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @param *segments<Array[#to_s]> Path segments to append.
|
22
|
+
#
|
23
|
+
# @return <String>
|
24
|
+
# A path relative to the public directory, with added segments.
|
25
|
+
def stylesheet_path(*segments)
|
26
|
+
public_path_for(:stylesheet, *segments)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Construct a path relative to the public directory
|
30
|
+
#
|
31
|
+
# @param <Symbol> The type of component.
|
32
|
+
# @param *segments<Array[#to_s]> Path segments to append.
|
33
|
+
#
|
34
|
+
# @return <String>
|
35
|
+
# A path relative to the public directory, with added segments.
|
36
|
+
def public_path_for(type, *segments)
|
37
|
+
File.join(::MerbAuth.public_dir_for(type), *segments)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Construct an app-level path.
|
41
|
+
#
|
42
|
+
# @param <Symbol> The type of component.
|
43
|
+
# @param *segments<Array[#to_s]> Path segments to append.
|
44
|
+
#
|
45
|
+
# @return <String>
|
46
|
+
# A path within the host application, with added segments.
|
47
|
+
def app_path_for(type, *segments)
|
48
|
+
File.join(::MerbAuth.app_dir_for(type), *segments)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Construct a slice-level path.
|
52
|
+
#
|
53
|
+
# @param <Symbol> The type of component.
|
54
|
+
# @param *segments<Array[#to_s]> Path segments to append.
|
55
|
+
#
|
56
|
+
# @return <String>
|
57
|
+
# A path within the slice source (Gem), with added segments.
|
58
|
+
def slice_path_for(type, *segments)
|
59
|
+
File.join(::MerbAuth.dir_for(type), *segments)
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|