49 lines
1.4 KiB
Ruby
49 lines
1.4 KiB
Ruby
class InvitationsController < ApplicationController
|
|
before_action :require_user_signed_in, except: ["show"]
|
|
before_action :require_user_signed_out, only: ["show"]
|
|
|
|
# GET /invitations
|
|
def index
|
|
@invitations_unused = current_user.invitations.unused
|
|
@invitations_used = current_user.invitations.used
|
|
@current_section = :invitations
|
|
end
|
|
|
|
# GET /invitations/a-random-invitation-token
|
|
def show
|
|
token = session[:invitation_token] = params[:id]
|
|
|
|
if Invitation.where(token: token, used_at: nil).exists?
|
|
redirect_to signup_path and return
|
|
else
|
|
flash.now[:alert] = "This invitation either doesn't exist or has already been used."
|
|
http_status :unauthorized
|
|
end
|
|
end
|
|
|
|
# POST /invitations
|
|
def create
|
|
@invitation = Invitation.new(user: current_user)
|
|
|
|
respond_to do |format|
|
|
if @invitation.save
|
|
format.html { redirect_to @invitation, notice: 'Invitation was successfully created.' }
|
|
format.json { render :show, status: :created, location: @invitation }
|
|
else
|
|
format.html { render :new }
|
|
format.json { render json: @invitation.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# DELETE /invitations/1
|
|
def destroy
|
|
@invitation = current_user.invitations.find(params[:id])
|
|
@invitation.destroy
|
|
respond_to do |format|
|
|
format.html { redirect_to invitations_url }
|
|
format.json { head :no_content }
|
|
end
|
|
end
|
|
end
|