milia 1.2.1 → 1.3.1.beta1
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.
- checksums.yaml +4 -4
- data/app/controllers/confirmations_controller.rb +7 -7
- data/app/controllers/registrations_controller.rb +13 -19
- data/app/views/devise/registrations/new.html.haml +53 -0
- data/lib/generators/milia/install_generator.rb +44 -41
- data/lib/generators/milia/templates/devise_permitted_parameters.rb +18 -0
- data/lib/generators/milia/templates/initializer.rb +3 -9
- data/lib/milia.rb +3 -22
- data/lib/milia/base.rb +88 -109
- data/lib/milia/control.rb +25 -25
- data/lib/milia/invite_member.rb +6 -6
- data/lib/milia/version.rb +1 -1
- metadata +16 -184
- data/.document +0 -5
- data/.gitignore +0 -94
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.slugignore +0 -2
- data/.travis.yml +0 -4
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -20
- data/README.md +0 -1207
- data/Rakefile +0 -1
- data/doc/gemfile_addition.txt +0 -28
- data/doc/manual_sample.sh +0 -816
- data/doc/ref_notes.txt +0 -155
- data/doc/sample.sh +0 -276
- data/markdown.rb +0 -38
- data/milia.gemspec +0 -29
- data/test/.ruby-gemset +0 -1
- data/test/.ruby-version +0 -1
- data/test/Gemfile +0 -81
- data/test/Gemfile.lock +0 -223
- data/test/README.md +0 -83
- data/test/Rakefile +0 -6
- data/test/app/assets/javascripts/application.js +0 -16
- data/test/app/assets/stylesheets/application.css +0 -13
- data/test/app/controllers/application_controller.rb +0 -13
- data/test/app/controllers/home_controller.rb +0 -10
- data/test/app/helpers/application_helper.rb +0 -2
- data/test/app/models/member.rb +0 -34
- data/test/app/models/post.rb +0 -14
- data/test/app/models/team.rb +0 -9
- data/test/app/models/team_asset.rb +0 -6
- data/test/app/models/tenant.rb +0 -54
- data/test/app/models/user.rb +0 -14
- data/test/app/models/zine.rb +0 -8
- data/test/app/views/home/index.html.erb +0 -2
- data/test/app/views/home/show.html.erb +0 -2
- data/test/app/views/layouts/application.html.erb +0 -14
- data/test/bin/bundle +0 -3
- data/test/bin/rails +0 -4
- data/test/bin/rake +0 -4
- data/test/config/application.rb +0 -36
- data/test/config/boot.rb +0 -4
- data/test/config/database.yml +0 -25
- data/test/config/environment.rb +0 -5
- data/test/config/environments/development.rb +0 -48
- data/test/config/environments/production.rb +0 -95
- data/test/config/environments/test.rb +0 -42
- data/test/config/initializers/backtrace_silencers.rb +0 -7
- data/test/config/initializers/devise.rb +0 -254
- data/test/config/initializers/filter_parameter_logging.rb +0 -4
- data/test/config/initializers/inflections.rb +0 -16
- data/test/config/initializers/milia.rb +0 -51
- data/test/config/initializers/mime_types.rb +0 -5
- data/test/config/initializers/secret_token.rb +0 -12
- data/test/config/initializers/session_store.rb +0 -3
- data/test/config/initializers/wrap_parameters.rb +0 -14
- data/test/config/locales/en.yml +0 -23
- data/test/config/routes.rb +0 -77
- data/test/db/migrate/20111012050200_add_sessions_table.rb +0 -12
- data/test/db/migrate/20111012050340_devise_create_users.rb +0 -48
- data/test/db/migrate/20111012050532_create_tenants.rb +0 -11
- data/test/db/migrate/20111012050600_create_tenants_users_join_table.rb +0 -8
- data/test/db/migrate/20111012050650_create_members.rb +0 -12
- data/test/db/migrate/20111012231923_create_posts.rb +0 -12
- data/test/db/migrate/20111013050657_create_zines.rb +0 -10
- data/test/db/migrate/20111013050753_create_teams.rb +0 -10
- data/test/db/migrate/20111013050837_create_team_assets.rb +0 -11
- data/test/db/schema.rb +0 -126
- data/test/db/seeds.rb +0 -7
- data/test/test/controllers/home_controller_test.rb +0 -132
- data/test/test/ctlr_test_helper.rb +0 -11
- data/test/test/fixtures/members.yml +0 -35
- data/test/test/fixtures/posts.yml +0 -96
- data/test/test/fixtures/team_assets.yml +0 -30
- data/test/test/fixtures/teams.yml +0 -17
- data/test/test/fixtures/tenants.yml +0 -12
- data/test/test/fixtures/tenants_users.yml +0 -15
- data/test/test/fixtures/users.yml +0 -33
- data/test/test/fixtures/zines.yml +0 -25
- data/test/test/models/member_test.rb +0 -75
- data/test/test/models/post_test.rb +0 -66
- data/test/test/models/team_test.rb +0 -49
- data/test/test/models/tenant_test.rb +0 -228
- data/test/test/models/user_test.rb +0 -182
- data/test/test/models/zine_test.rb +0 -40
- data/test/test/test_helper.rb +0 -31
@@ -0,0 +1,18 @@
|
|
1
|
+
module DevisePermittedParameters
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
before_filter :configure_permitted_parameters
|
6
|
+
end
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def configure_permitted_parameters
|
11
|
+
devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :password, :password_confirmation])
|
12
|
+
devise_parameter_sanitizer.permit(:account_update, keys: [:email, :password, :password_confirmation, :current_password])
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
DeviseController.send :include, DevisePermittedParameters
|
@@ -5,9 +5,9 @@ Milia.setup do |config|
|
|
5
5
|
|
6
6
|
# true if you wish to use a coupon-based option in your sign-up form
|
7
7
|
# false to otherwise not expect a coupon attribute in the parameters
|
8
|
-
config.use_coupon =
|
8
|
+
config.use_coupon = false
|
9
9
|
|
10
|
-
# true if you use recaptcha on your sign-up form;
|
10
|
+
# true if you use recaptcha on your sign-up form;
|
11
11
|
# be sure to include the gem 'recaptcha' in your Gemfile
|
12
12
|
# false if you do not
|
13
13
|
config.use_recaptcha = <%= !@skip_recaptcha %>
|
@@ -20,7 +20,7 @@ Milia.setup do |config|
|
|
20
20
|
# be sure to include the gem 'airbrake' in your Gemfile
|
21
21
|
# false if you do not
|
22
22
|
# In certain situations, milia will notify airbrake of a situation which
|
23
|
-
# is not necessarily an exception: such as if someone attempts to
|
23
|
+
# is not necessarily an exception: such as if someone attempts to
|
24
24
|
# sign up but you're limited new sign ups (such as when in beta mode)
|
25
25
|
# then you'll get notified via airbrake of the email of the person
|
26
26
|
# attempting the signup (in case you wish to contact them)
|
@@ -30,12 +30,6 @@ Milia.setup do |config|
|
|
30
30
|
# ASSUMES User model
|
31
31
|
config.use_invite_member = <%= !@skip_invite_member %>
|
32
32
|
|
33
|
-
# whitelist user params list
|
34
|
-
# allows an app to expand the permitted attribute list
|
35
|
-
# specify each attribute as a symbol
|
36
|
-
# example: [:name]
|
37
|
-
# config.whitelist_user_params = []
|
38
|
-
|
39
33
|
# whitelist tenant params list
|
40
34
|
# allows an app to expand the permitted attribute list
|
41
35
|
# specify each attribute as a symbol
|
data/lib/milia.rb
CHANGED
@@ -29,30 +29,11 @@ module Milia
|
|
29
29
|
mattr_accessor :use_invite_member
|
30
30
|
@@use_invite_member = true
|
31
31
|
|
32
|
-
|
33
|
-
# whitelist user params list
|
34
|
-
# allows an app to expand the permitted attribute list
|
35
|
-
# specify each attribute as a symbol
|
36
|
-
# example: [:name]
|
37
|
-
# config.whitelist_user_params = []
|
38
|
-
@@whitelist_user_params = []
|
39
|
-
|
40
|
-
def self.whitelist_user_params=(list)
|
41
|
-
raise ArgumentError unless !list.nil? && list.kind_of?( Array )
|
42
|
-
@@whitelist_user_params = list
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.whitelist_user_params()
|
46
|
-
return [:email, :password, :password_confirmation] +
|
47
|
-
@@whitelist_user_params
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
# whitelist user params list
|
32
|
+
# whitelist tenant params list
|
52
33
|
# allows an app to expand the permitted attribute list
|
53
34
|
# specify each attribute as a symbol
|
54
35
|
# example: [:name]
|
55
|
-
# config.
|
36
|
+
# config.whitelist_tenant_params = []
|
56
37
|
@@whitelist_tenant_params = []
|
57
38
|
|
58
39
|
def self.whitelist_tenant_params=(list)
|
@@ -68,7 +49,7 @@ module Milia
|
|
68
49
|
# allows an app to expand the permitted attribute list
|
69
50
|
# specify each attribute as a symbol
|
70
51
|
# example: [:name]
|
71
|
-
# config.
|
52
|
+
# config.whitelist_coupon_params = []
|
72
53
|
@@whitelist_coupon_params = []
|
73
54
|
|
74
55
|
def self.whitelist_coupon_params=(list)
|
data/lib/milia/base.rb
CHANGED
@@ -14,36 +14,29 @@ module Milia
|
|
14
14
|
# Forces all references to be limited to current_tenant rows
|
15
15
|
# ------------------------------------------------------------------------
|
16
16
|
def acts_as_tenant()
|
17
|
-
belongs_to
|
17
|
+
belongs_to :tenant
|
18
18
|
validates_presence_of :tenant_id
|
19
19
|
|
20
|
-
default_scope lambda { where(
|
20
|
+
default_scope lambda { where("#{table_name}.tenant_id = ?", Thread.current[:tenant_id]) }
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
# ..........................callback enforcers............................
|
23
|
+
after_initialize do |obj|
|
24
|
+
# Whenever we initialize a new object it needs to have the correct tenant_id of the current_user.
|
25
|
+
# Ensures that destroy can be called on tenanted records which haven't been persisted yet.
|
26
|
+
obj.tenant_id ||= Thread.current[:tenant_id]
|
26
27
|
end
|
27
28
|
|
28
|
-
|
29
|
-
before_save do |obj|
|
29
|
+
# ..........................callback enforcers............................
|
30
|
+
before_save do |obj| # force tenant_id to be correct for current_user
|
30
31
|
# raise exception if updates attempted on wrong data
|
31
32
|
raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id == Thread.current[:tenant_id]
|
32
|
-
true # ok to proceed
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
# true # ok to proceed
|
41
|
-
# end
|
42
|
-
|
43
|
-
# ..........................callback enforcers............................
|
44
|
-
before_destroy do |obj| # force tenant_id to be correct for current_user
|
45
|
-
raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id == Thread.current[:tenant_id]
|
46
|
-
true # ok to proceed
|
35
|
+
# ..........................callback enforcers............................
|
36
|
+
before_destroy do |obj| # force tenant_id to be correct for current_user
|
37
|
+
if (obj.tenant_id != Thread.current[:tenant_id])
|
38
|
+
raise ::Milia::Control::InvalidTenantAccess
|
39
|
+
end
|
47
40
|
end
|
48
41
|
|
49
42
|
end
|
@@ -53,32 +46,24 @@ module Milia
|
|
53
46
|
# Forces all reference to the universal tenant (nil)
|
54
47
|
# ------------------------------------------------------------------------
|
55
48
|
def acts_as_universal()
|
56
|
-
belongs_to
|
49
|
+
belongs_to :tenant
|
57
50
|
|
58
|
-
default_scope { where(
|
51
|
+
default_scope { where("#{table_name}.tenant_id IS NULL") }
|
59
52
|
|
60
|
-
|
61
|
-
before_save do |obj|
|
62
|
-
|
63
|
-
|
53
|
+
# ..........................callback enforcers............................
|
54
|
+
before_save do |obj| # force tenant_id to be universal
|
55
|
+
if obj.tenant_id.present?
|
56
|
+
raise ::Milia::Control::InvalidTenantAccess
|
57
|
+
end
|
64
58
|
end
|
65
59
|
|
66
|
-
|
67
|
-
|
68
|
-
# no longer needed because before_save invoked prior to before_update
|
69
|
-
#
|
70
|
-
# raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id.nil?
|
71
|
-
# true # ok to proceed
|
72
|
-
# end
|
73
|
-
|
74
|
-
# ..........................callback enforcers............................
|
75
|
-
before_destroy do |obj| # force tenant_id to be universal
|
60
|
+
# ..........................callback enforcers............................
|
61
|
+
before_destroy do |obj| # force tenant_id to be universal
|
76
62
|
raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id.nil?
|
77
|
-
true # ok to proceed
|
78
63
|
end
|
79
64
|
|
80
65
|
end
|
81
|
-
|
66
|
+
|
82
67
|
# ------------------------------------------------------------------------
|
83
68
|
# acts_as_universal_and_determines_tenant_reference
|
84
69
|
# All the characteristics of acts_as_universal AND also does the magic
|
@@ -90,96 +75,96 @@ module Milia
|
|
90
75
|
|
91
76
|
acts_as_universal()
|
92
77
|
|
93
|
-
|
78
|
+
# validate that a tenant exists prior to a user creation
|
94
79
|
before_create do |new_user|
|
95
80
|
if Thread.current[:tenant_id].blank? ||
|
96
|
-
|
97
|
-
|
81
|
+
!Thread.current[:tenant_id].kind_of?(Integer) ||
|
82
|
+
Thread.current[:tenant_id].zero?
|
98
83
|
|
99
|
-
raise ::Milia::Control::InvalidTenantAccess,"no existing valid current tenant"
|
84
|
+
raise ::Milia::Control::InvalidTenantAccess, "no existing valid current tenant"
|
100
85
|
|
101
86
|
end
|
102
|
-
end
|
103
|
-
|
104
|
-
|
105
|
-
# return true if ok to proceed; false if break callback chain
|
87
|
+
end # before create callback do
|
88
|
+
|
89
|
+
# before create, tie user with current tenant
|
106
90
|
after_create do |new_user|
|
107
|
-
tenant = Tenant.find(
|
91
|
+
tenant = Tenant.find(Thread.current[:tenant_id])
|
108
92
|
unless tenant.users.include?(new_user)
|
109
|
-
tenant.users << new_user
|
93
|
+
tenant.users << new_user # add user to this tenant if not already there
|
110
94
|
end
|
111
|
-
|
112
95
|
end # before_create do
|
113
|
-
|
96
|
+
|
114
97
|
before_destroy do |old_user|
|
115
|
-
old_user.tenants.clear
|
116
|
-
true
|
98
|
+
old_user.tenants.clear # remove all tenants for this user
|
117
99
|
end # before_destroy do
|
118
|
-
|
119
|
-
end
|
100
|
+
|
101
|
+
end
|
120
102
|
|
121
103
|
# ------------------------------------------------------------------------
|
122
104
|
# ------------------------------------------------------------------------
|
123
|
-
|
124
|
-
|
105
|
+
def acts_as_universal_and_determines_tenant()
|
106
|
+
has_and_belongs_to_many :users
|
125
107
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
108
|
+
acts_as_universal()
|
109
|
+
|
110
|
+
before_destroy do |old_tenant|
|
111
|
+
old_tenant.users.clear # remove all users from this tenant
|
112
|
+
true
|
113
|
+
end # before_destroy do
|
114
|
+
end
|
133
115
|
|
134
116
|
# ------------------------------------------------------------------------
|
135
117
|
# current_tenant -- returns tenant obj for current tenant
|
136
|
-
|
118
|
+
# return nil if no current tenant defined
|
137
119
|
# ------------------------------------------------------------------------
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
120
|
+
def current_tenant()
|
121
|
+
begin
|
122
|
+
tenant = (
|
123
|
+
Thread.current[:tenant_id].blank? ?
|
124
|
+
nil :
|
125
|
+
Tenant.find(Thread.current[:tenant_id])
|
126
|
+
)
|
127
|
+
|
128
|
+
return tenant
|
145
129
|
|
146
|
-
|
130
|
+
rescue ActiveRecord::RecordNotFound
|
131
|
+
return nil
|
132
|
+
end
|
133
|
+
end
|
147
134
|
|
148
|
-
rescue ActiveRecord::RecordNotFound
|
149
|
-
return nil
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
135
|
# ------------------------------------------------------------------------
|
154
136
|
# current_tenant_id -- returns tenant_id for current tenant
|
155
137
|
# ------------------------------------------------------------------------
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
138
|
+
def current_tenant_id()
|
139
|
+
return Thread.current[:tenant_id]
|
140
|
+
end
|
141
|
+
|
160
142
|
# ------------------------------------------------------------------------
|
161
143
|
# set_current_tenant -- model-level ability to set the current tenant
|
162
144
|
# NOTE: *USE WITH CAUTION* normally this should *NEVER* be done from
|
163
145
|
# the models ... it's only useful and safe WHEN performed at the start
|
164
146
|
# of a background job (DelayedJob#perform)
|
165
147
|
# ------------------------------------------------------------------------
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
148
|
+
def set_current_tenant(tenant)
|
149
|
+
# able to handle tenant obj or tenant_id
|
150
|
+
case tenant
|
151
|
+
when Tenant then
|
152
|
+
tenant_id = tenant.id
|
153
|
+
when Integer then
|
154
|
+
tenant_id = tenant
|
155
|
+
else
|
156
|
+
raise ArgumentError, "invalid tenant object or id"
|
157
|
+
end # case
|
158
|
+
|
159
|
+
old_id = (Thread.current[:tenant_id].nil? ? '%' : Thread.current[:tenant_id])
|
160
|
+
Thread.current[:tenant_id] = tenant_id
|
161
|
+
logger.debug("MILIA >>>>> [Tenant#change_tenant] new: #{tenant_id}\told:#{old_id}") unless logger.nil?
|
162
|
+
|
163
|
+
end
|
178
164
|
|
179
|
-
end
|
180
165
|
# ------------------------------------------------------------------------
|
181
166
|
# ------------------------------------------------------------------------
|
182
|
-
|
167
|
+
|
183
168
|
# ------------------------------------------------------------------------
|
184
169
|
# where_restrict_tenant -- gens tenant restrictive where clause for each klass
|
185
170
|
# NOTE: subordinate join tables will not get the default scope by Rails
|
@@ -188,22 +173,16 @@ module Milia
|
|
188
173
|
# right. adding an additional .where( where_restrict_tenants(klass1, klass2,...))
|
189
174
|
# for each of the subordinate models in the join seems like a nice safety issue.
|
190
175
|
# ------------------------------------------------------------------------
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
# ------------------------------------------------------------------------
|
196
|
-
# ------------------------------------------------------------------------
|
197
|
-
|
198
|
-
# ------------------------------------------------------------------------
|
199
|
-
# ------------------------------------------------------------------------
|
176
|
+
def where_restrict_tenant(*args)
|
177
|
+
args.map { |klass| "#{klass.table_name}.tenant_id = #{Thread.current[:tenant_id]}" }.join(" AND ")
|
178
|
+
end
|
200
179
|
|
201
180
|
# ------------------------------------------------------------------------
|
202
181
|
# ------------------------------------------------------------------------
|
203
182
|
|
204
|
-
end
|
183
|
+
end # module ClassMethods
|
205
184
|
# #############################################################################
|
206
185
|
# #############################################################################
|
207
|
-
|
208
|
-
end
|
209
|
-
end
|
186
|
+
|
187
|
+
end # module Base
|
188
|
+
end # module Milia
|
data/lib/milia/control.rb
CHANGED
@@ -5,7 +5,7 @@ module Milia
|
|
5
5
|
class InvalidTenantAccess < SecurityError; end
|
6
6
|
class MaxTenantExceeded < ArgumentError; end
|
7
7
|
# #############################################################################
|
8
|
-
|
8
|
+
|
9
9
|
def self.included(base)
|
10
10
|
base.extend ClassMethods
|
11
11
|
end
|
@@ -13,11 +13,11 @@ module Milia
|
|
13
13
|
# #############################################################################
|
14
14
|
# #############################################################################
|
15
15
|
module ClassMethods
|
16
|
-
|
16
|
+
|
17
17
|
end # module ClassMethods
|
18
18
|
# #############################################################################
|
19
19
|
# #############################################################################
|
20
|
-
|
20
|
+
|
21
21
|
public
|
22
22
|
|
23
23
|
# ------------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ module Milia
|
|
32
32
|
|
33
33
|
# ------------------------------------------------------------------------------
|
34
34
|
# ------------------------------------------------------------------------------
|
35
|
-
def __milia_reset_tenant!
|
35
|
+
def __milia_reset_tenant!
|
36
36
|
__milia_change_tenant!( nil )
|
37
37
|
logger.debug("MILIA >>>>> [reset tenant] ") unless logger.nil?
|
38
38
|
end
|
@@ -43,8 +43,8 @@ module Milia
|
|
43
43
|
if ::Milia.trace_on
|
44
44
|
tid = ( session[:tenant_id].nil? ? "%/#{Thread.current[:tenant_id]}" : session[:tenant_id].to_s )
|
45
45
|
uid = ( current_user.nil? ? "%/#{session[:user_id]}" : "#{current_user.id}")
|
46
|
-
logger.debug(
|
47
|
-
"MILIA >>>>> [#{fm_msg}] stid: #{tid}\tuid: #{uid}\tus-in: #{user_signed_in?}"
|
46
|
+
logger.debug(
|
47
|
+
"MILIA >>>>> [#{fm_msg}] stid: #{tid}\tuid: #{uid}\tus-in: #{user_signed_in?}"
|
48
48
|
) unless logger.nil?
|
49
49
|
end # trace check
|
50
50
|
end
|
@@ -58,11 +58,11 @@ module Milia
|
|
58
58
|
def set_current_tenant( tenant_id = nil )
|
59
59
|
|
60
60
|
if user_signed_in?
|
61
|
-
|
61
|
+
|
62
62
|
@_my_tenants ||= current_user.tenants # gets all possible tenants for user
|
63
|
-
|
63
|
+
|
64
64
|
tenant_id ||= session[:tenant_id] # use session tenant_id ?
|
65
|
-
|
65
|
+
|
66
66
|
if tenant_id.nil? # no arg; find automatically based on user
|
67
67
|
tenant_id = @_my_tenants.first.id # just pick the first one
|
68
68
|
else # validate the specified tenant_id before setup
|
@@ -73,12 +73,12 @@ module Milia
|
|
73
73
|
tenant_id = nil # an impossible tenant_id
|
74
74
|
end
|
75
75
|
|
76
|
-
__milia_change_tenant!( tenant_id )
|
76
|
+
__milia_change_tenant!( tenant_id )
|
77
77
|
trace_tenanting( "set_current_tenant" )
|
78
78
|
|
79
79
|
true # before filter ok to proceed
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
# ------------------------------------------------------------------------------
|
83
83
|
# initiate_tenant -- initiates first-time tenant; establishes thread
|
84
84
|
# assumes not in a session yet (since here only upon new account sign-up)
|
@@ -87,9 +87,9 @@ module Milia
|
|
87
87
|
# tenant -- tenant obj of the new tenant
|
88
88
|
# ------------------------------------------------------------------------------
|
89
89
|
def initiate_tenant( tenant )
|
90
|
-
__milia_change_tenant!( tenant.id )
|
90
|
+
__milia_change_tenant!( tenant.id )
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
# ------------------------------------------------------------------------------
|
94
94
|
# ------------------------------------------------------------------------------
|
95
95
|
|
@@ -98,8 +98,8 @@ module Milia
|
|
98
98
|
# -- authenticates user
|
99
99
|
# -- sets current tenant
|
100
100
|
# ------------------------------------------------------------------------------
|
101
|
-
def authenticate_tenant!
|
102
|
-
unless authenticate_user!(force: true)
|
101
|
+
def authenticate_tenant!
|
102
|
+
unless current_user.present? || authenticate_user!(force: true)
|
103
103
|
email = ( params.nil? || params[:user].nil? ? "<email missing>" : params[:user][:email] )
|
104
104
|
flash[:error] = "cannot sign in as #{email}; check email/password"
|
105
105
|
logger.info("MILIA >>>>> [failed auth user] ") unless logger.nil?
|
@@ -123,33 +123,33 @@ module Milia
|
|
123
123
|
|
124
124
|
# ------------------------------------------------------------------------------
|
125
125
|
# ------------------------------------------------------------------------------
|
126
|
-
def max_tenants
|
126
|
+
def max_tenants
|
127
127
|
logger.info(
|
128
|
-
"MILIA >>>>> [max tenant signups] #{Time.now.to_s(:db)} - User: #{params[:user]
|
128
|
+
"MILIA >>>>> [max tenant signups] #{Time.now.to_s(:db)} - User: '#{params[:user].try(:email)}', Tenant: '#{params[:tenant].try(:name)}'"
|
129
129
|
) unless logger.nil?
|
130
130
|
|
131
131
|
flash[:error] = "Sorry: new accounts not permitted at this time"
|
132
|
-
|
132
|
+
|
133
133
|
# if using Airbrake & airbrake gem
|
134
134
|
if ::Milia.use_airbrake
|
135
135
|
notify_airbrake( $! ) # have airbrake report this -- requires airbrake gem
|
136
136
|
end
|
137
137
|
redirect_back
|
138
138
|
end
|
139
|
-
|
139
|
+
|
140
140
|
# ------------------------------------------------------------------------------
|
141
141
|
# invalid_tenant -- using wrong or bad data
|
142
142
|
# ------------------------------------------------------------------------------
|
143
143
|
def invalid_tenant
|
144
|
-
flash[:error] = "
|
144
|
+
flash[:error] = "Wrong tenant access"
|
145
145
|
redirect_back
|
146
146
|
end
|
147
|
-
|
147
|
+
|
148
148
|
# ------------------------------------------------------------------------------
|
149
149
|
# redirect_back -- bounce client back to referring page
|
150
150
|
# ------------------------------------------------------------------------------
|
151
151
|
def redirect_back
|
152
|
-
|
152
|
+
super(fallback_location: root_path)
|
153
153
|
end
|
154
154
|
|
155
155
|
# ------------------------------------------------------------------------------
|
@@ -166,15 +166,15 @@ module Milia
|
|
166
166
|
return option_obj if option_obj.instance_of?(klass)
|
167
167
|
option_obj ||= {} # if nil, makes it empty hash
|
168
168
|
return klass.send( :new, option_obj )
|
169
|
-
end
|
169
|
+
end
|
170
170
|
|
171
171
|
# ------------------------------------------------------------------------------
|
172
172
|
# prep_signup_view -- prepares for the signup view
|
173
173
|
# args:
|
174
174
|
# tenant: either existing tenant obj or params for tenant
|
175
175
|
# user: either existing user obj or params for user
|
176
|
-
# My signup form has fields for user's email,
|
177
|
-
# organization's name (tenant model), coupon code,
|
176
|
+
# My signup form has fields for user's email,
|
177
|
+
# organization's name (tenant model), coupon code,
|
178
178
|
# ------------------------------------------------------------------------------
|
179
179
|
def prep_signup_view(tenant=nil, user=nil, coupon={coupon:''})
|
180
180
|
@user = klass_option_obj( User, user )
|