class Support::Sites::FreshdeskController < Support::Sites::Controller
  def show
    render_success :ok, json: redirect_url
  end

  private
    def redirect_url
      "#{params[:redirect_uri]}?state=#{params[:state]}&id_token=#{id_token}"
    end

    def id_token
      JWT.encode(payload, rsa_key, 'RS256', alg: 'RS256', typ: 'JWT')
    end

    def payload
      {
        sub: current_user.id.to_s,
        email: current_user.email,
        nonce: params[:nonce],
        iat: Time.now.to_i,
        given_name: current_user.first_name,
        family_name: current_user.last_name
      }
    end

    def rsa_key
      OpenSSL::PKey::RSA.new(File.read('config/secrets/jwtRS256.key'))
    end
end
