class SignatoriesController < ApplicationController before_action :fetch_signatory before_action :check_token, only: %i[show cancel cancel_confirm] def show unless @signatory.signed_at @signatory.update! ip: request.remote_ip, user_agent: request.user_agent, signed_at: DateTime.now SignatoryMailer.with(signatory: @signatory).signed.deliver_now! end end def cancel end def cancel_confirm @signatory.destroy! end private def fetch_signatory @signatory = Signatory.find params[:id] @letter = @signatory.letter end def check_token token = params[:token] head :forbidden unless !token.nil? and @signatory.token == token end end