milia 1.2.1 → 1.3.1.beta1
Sign up to get free protection for your applications and to get access to all the features.
- 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 )
|