Class: Spree::Admin::InvitationsController

Inherits:
BaseController
  • Object
show all
Includes:
SettingsConcern
Defined in:
app/controllers/spree/admin/invitations_controller.rb

Instance Method Summary collapse

Methods included from BreadcrumbConcern

#add_breadcrumb_icon_instance_var

Instance Method Details

#acceptObject

PUT /admin/invitations/:id/accept



71
72
73
74
75
76
77
78
# File 'app/controllers/spree/admin/invitations_controller.rb', line 71

def accept
  @invitation = try_spree_current_user.invitations.pending.not_expired.find_by_prefix_id!(params[:id])

  authorize! :accept, @invitation

  @invitation.accept!
  redirect_to spree.admin_path, notice: Spree.t('invitation_accepted')
end

#createObject

POST /admin/invitations



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'app/controllers/spree/admin/invitations_controller.rb', line 31

def create
  authorize! :create, Spree::Invitation
  authorize! :manage, @parent

  @invitation = Spree::Invitation.new(permitted_params)
  @invitation.resource = @parent
  @invitation.inviter = try_spree_current_user

  if @invitation.save
    respond_to do |format|
      format.html { redirect_to spree.admin_invitations_path, notice: flash_message_for(@invitation, :successfully_created) }
      format.turbo_stream
    end
  else
    render :new, status: :unprocessable_content
  end
end

#destroyObject

DELETE /admin/invitations/:id



88
89
90
91
92
93
# File 'app/controllers/spree/admin/invitations_controller.rb', line 88

def destroy
  authorize! :destroy, @invitation

  @invitation.destroy
  redirect_back fallback_location: spree.admin_invitations_path, notice: flash_message_for(@invitation, :successfully_removed)
end

#indexObject

GET /admin/invitations



15
16
17
18
# File 'app/controllers/spree/admin/invitations_controller.rb', line 15

def index
  @search = scope.includes(:inviter, :role).ransack(params[:q])
  @collection = @search.result
end

#newObject

GET /admin/invitations/new



21
22
23
24
25
26
27
28
# File 'app/controllers/spree/admin/invitations_controller.rb', line 21

def new
  authorize! :create, Spree::Invitation
  authorize! :manage, @parent

  @invitation = Spree::Invitation.new
  @invitation.resource = @parent
  @invitation.inviter = try_spree_current_user
end

#resendObject

PUT /admin/invitations/:id/resend



81
82
83
84
85
# File 'app/controllers/spree/admin/invitations_controller.rb', line 81

def resend
  @invitation = scope.find_by_prefix_id!(params[:id])
  @invitation.resend!
  redirect_back fallback_location: spree.admin_invitations_path, notice: Spree.t('invitation_resent')
end

#showObject

GET /admin/invitations/:id?token=:token



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/controllers/spree/admin/invitations_controller.rb', line 50

def show
  decoded_id = Spree::Invitation.decode_prefixed_id(params[:id])
  @invitation = Spree::Invitation.pending.not_expired.find_by!(id: decoded_id, token: params[:token])
  @parent = @invitation.resource

  if try_spree_current_user.present?
    unless @invitation.invitee == try_spree_current_user
      raise ActiveRecord::RecordNotFound
    end
  elsif @invitation.invitee.present?
    store_location
    
  else
    redirect_to spree.new_admin_admin_user_path(token: @invitation.token), status: :see_other
  end
rescue ActiveRecord::RecordNotFound
  redirect_to spree.root_path, alert: Spree.t('invalid_or_expired_invitation')
  nil
end