class School::TokensController < ApplicationController
  def index
    render_success :ok, json: tokens.map { |t| token_props(t) }
  end

  def create
    token = tokens.build(token_params)
    unencrypted_token = token.create_token.token

    if token.save
      render_success :ok, json: token_props(token).merge(access_token: unencrypted_token)
    else
      render_error :unprocessable_entity, errors: token
    end
  end

  def destroy
    if token.destroy
      render_success :ok
    else
      render_error :unprocessable_entity
    end
  end

  private
    def tokens
      current_school.school_tokens
    end

    def token
      @token ||= tokens.find_by(id: params[:id])
    end

    def token_params
      params.permit(:active)
    end

    def token_props(token)
      {
        id: token.id,
        client: token.client,
        scopes: token.scopes,
        active: token.active
      }
    end
end
