class InvitationsController < ApplicationController before_action :authenticate_user!, 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.order('used_at desc') @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 do redirect_to @invitation, flash: { success: 'Invitation was successfully created.' } end 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