Skip to content

Commit f7f7a57

Browse files
authored
Merge pull request #13895 from cillian/remove-angular-from-enterprise-settings-users
Remove Angular from Enterprise > Settings > Users section
2 parents da912f2 + 447d80c commit f7f7a57

File tree

28 files changed

+439
-307
lines changed

28 files changed

+439
-307
lines changed

app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,12 @@ angular.module("admin.enterprises")
44
$scope.Enterprises = Enterprises
55
$scope.navClear = NavigationCheck.clear
66
$scope.menu = SideMenu
7-
$scope.newManager = { id: null, email: (t('add_manager')) }
87
$scope.StatusMessage = StatusMessage
98
$scope.RequestMonitor = RequestMonitor
109

1110
$scope.$watch 'enterprise_form.$dirty', (newValue) ->
1211
StatusMessage.display 'notice', t('admin.unsaved_changes') if newValue
1312

14-
$scope.$watch 'newManager', (newValue) ->
15-
$scope.addManager($scope.newManager) if newValue
16-
1713
$scope.setFormDirty = ->
1814
$scope.$apply ->
1915
$scope.enterprise_form.$setDirty()
@@ -35,26 +31,6 @@ angular.module("admin.enterprises")
3531
# Register the NavigationCheck callback
3632
NavigationCheck.register(enterpriseNavCallback)
3733

38-
$scope.removeManager = (manager) ->
39-
if manager.id?
40-
if manager.id == $scope.Enterprise.owner.id or manager.id == parseInt($scope.receivesNotifications)
41-
return
42-
for i, user of $scope.Enterprise.users when user.id == manager.id
43-
$scope.Enterprise.users.splice i, 1
44-
$scope.enterprise_form?.$setDirty()
45-
46-
$scope.addManager = (manager) ->
47-
if manager.id? and angular.isNumber(manager.id) and manager.email?
48-
manager =
49-
id: manager.id
50-
email: manager.email
51-
confirmed: manager.confirmed
52-
if (user for user in $scope.Enterprise.users when user.id == manager.id).length == 0
53-
$scope.Enterprise.users.unshift(manager)
54-
$scope.enterprise_form?.$setDirty()
55-
else
56-
alert ("#{manager.email}" + " " + t("is_already_manager"))
57-
5834
$scope.performEnterpriseAction = (enterpriseActionName, warning_message_key, success_message_key) ->
5935
return unless confirm($scope.translation(warning_message_key))
6036

app/controllers/admin/enterprises_controller.rb

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ def welcome
6767
def update
6868
tag_rules_attributes = params[object_name].delete :tag_rules_attributes
6969
update_tag_rules(tag_rules_attributes) if tag_rules_attributes.present?
70-
update_enterprise_notifications
7170
update_vouchers
7271

7372
delete_custom_tab if params[:custom_tab] == 'false'
@@ -314,14 +313,6 @@ def update_tag_rules(tag_rules_attributes)
314313
end
315314
end
316315

317-
def update_enterprise_notifications
318-
user_id = params[:receives_notifications].to_i
319-
320-
return unless user_id.positive? && @enterprise.user_ids.include?(user_id)
321-
322-
@enterprise.update_contact(user_id)
323-
end
324-
325316
def update_vouchers
326317
params_voucher_ids = params[:enterprise][:voucher_ids].to_a.map(&:to_i)
327318
voucher_ids = @enterprise.vouchers.map(&:id)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# frozen_string_literal: true
2+
3+
module Admin
4+
class UserInvitationsController < ResourceController
5+
before_action :load_enterprise
6+
7+
def new; end
8+
9+
def create
10+
@user_invitation.attributes = permitted_resource_params
11+
if @user_invitation.save!
12+
flash[:success] = I18n.t(:user_invited, email: @user_invitation.email)
13+
else
14+
render :new
15+
end
16+
end
17+
18+
private
19+
20+
def load_enterprise
21+
@enterprise = OpenFoodNetwork::Permissions
22+
.new(spree_current_user)
23+
.editable_enterprises
24+
.find_by(permalink: params[:enterprise_id])
25+
end
26+
27+
def permitted_resource_params
28+
params.require(:user_invitation).permit(:email).merge(enterprise: @enterprise)
29+
end
30+
end
31+
end

app/controllers/concerns/manager_invitations.rb

Lines changed: 0 additions & 19 deletions
This file was deleted.

app/forms/user_invitation.rb

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# frozen_string_literal: true
2+
3+
class UserInvitation
4+
include ActiveModel::Model
5+
include ActiveModel::Attributes
6+
include ActiveModel::Validations::Callbacks
7+
8+
attribute :enterprise
9+
attribute :email
10+
11+
before_validation :normalize_email
12+
13+
validates :email, presence: true, 'valid_email_2/email': { mx: true }
14+
validates :enterprise, presence: true
15+
validate :not_existing_enterprise_user
16+
17+
def save!
18+
return unless valid?
19+
20+
user = find_or_create_user!
21+
enterprise.users << user
22+
23+
return unless user.previously_new_record?
24+
25+
EnterpriseMailer.manager_invitation(enterprise, user).deliver_later
26+
end
27+
28+
private
29+
30+
def find_or_create_user!
31+
Spree::User.find_or_create_by!(email: email) do |user|
32+
user.email = email
33+
user.password = SecureRandom.base58(64)
34+
user.unconfirmed_email = email
35+
user.reset_password_token = Devise.friendly_token
36+
# Same time as used in Devise's lib/devise/models/recoverable.rb.
37+
user.reset_password_sent_at = Time.now.utc
38+
end
39+
end
40+
41+
def normalize_email
42+
self.email = email.strip if email.present?
43+
end
44+
45+
def not_existing_enterprise_user
46+
return unless email.present? && enterprise.users.where(email: email).exists?
47+
48+
errors.add(:email, :is_already_manager)
49+
end
50+
end

app/models/enterprise.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,13 @@ def contact
294294
contact || owner
295295
end
296296

297-
def update_contact(user_id)
297+
def contact_id
298+
contact&.id
299+
end
300+
301+
def contact_id=(user_id)
302+
return unless user_id.to_i.positive? && users.confirmed.exists?(user_id.to_i)
303+
298304
enterprise_roles.update_all(["receives_notifications=(user_id=?)", user_id])
299305
end
300306

@@ -576,7 +582,7 @@ def enforce_ownership_limit
576582
end
577583

578584
def set_default_contact
579-
update_contact owner_id
585+
self.contact_id = owner_id
580586
end
581587

582588
def relate_to_owners_enterprises

app/models/spree/ability.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def add_enterprise_management_abilities(user)
191191
user.enterprises.include? stripe_account.enterprise
192192
end
193193

194-
can [:admin, :create], :manager_invitation
194+
can [:admin, :create], UserInvitation
195195

196196
can [:admin, :index, :destroy], :oidc_setting
197197

app/models/spree/user.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class User < ApplicationRecord
2323
before_destroy :check_completed_orders
2424

2525
scope :admin, -> { where(admin: true) }
26+
scope :confirmed, -> { where.not(confirmed_at: nil) }
2627

2728
has_many :enterprise_roles, dependent: :destroy
2829
has_many :enterprises, through: :enterprise_roles

app/reflexes/invite_manager_reflex.rb

Lines changed: 0 additions & 40 deletions
This file was deleted.

app/services/permitted_attributes/enterprise.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def self.basic_permitted_attributes
4040
:hide_ofn_navigation, :white_label_logo, :white_label_logo_link,
4141
:hide_groups_tab, :external_billing_id,
4242
:enable_producers_to_edit_orders,
43-
:remove_logo, :remove_promo_image, :remove_white_label_logo
43+
:remove_logo, :remove_promo_image, :remove_white_label_logo, :contact_id
4444
]
4545
end
4646
end

0 commit comments

Comments
 (0)