Sha256: 77e8368d3d8c089bfb78c7e397fe67fcde11d291a062ee55de23f865d23a1dcb

Contents?: true

Size: 1.83 KB

Versions: 4

Compression:

Stored size: 1.83 KB

Contents

module Unsakini
  class BoardsController < BaseController

    include LoggedInControllerConcern
    include SerializerControllerConcern
    include BoardOwnerControllerConcern
    include ::ActionController::Serialization

    before_action :ensure_board, :only => [:show, :update, :destroy]
    before_action :ensure_board_owner, :only => [:update, :destroy]

    # Returns boards belonging to current user
    #
    # `GET /api/boards`
    #
    def index
      admin = true
      shared = false
      admin = params[:is_admin] == 'true' if params[:admin]
      shared = params[:shared] == 'true' if params[:shared]
      result = @user.user_boards.shared(shared)
      result = result.admin if admin
      paginate json: result, per_page: 10
    end

    # Creates board belonging to current user.
    #
    # `POST /api/boards`
    #
    def create
      @user_board = UserBoard.new(
        name: params[:board][:name],
        user_id: @user.id,
        encrypted_password: params[:encrypted_password],
        is_admin: true
      )
      if @user_board.save
        render json: @user_board, status: :created
      else
        render json: @user_board.errors.full_messages, status: 422
      end

    end

    # Render a single board.
    #
    # `GET /api/boards/:id`
    #
    def show
      render json: @user_board
    end

    # Updates a single board.
    #
    # `PUT /api/boards/:id`
    def update
      if @user_board.update(name: params[:board][:name], encrypted_password: params[:encrypted_password])
        render json: @user_board
      else
        errors = @board.errors.full_messages.concat @user_board.errors.full_messages
        render json: errors, status: 422
      end
    end

    # Deletes a board resource.
    #
    # `DELETE /api/boards/:id`
    def destroy
      @board.destroy
      render json: {}, status: :ok
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
unsakini-0.0.5 app/controllers/unsakini/boards_controller.rb
unsakini-0.0.5.pre.1 app/controllers/unsakini/boards_controller.rb
unsakini-0.0.4.pre.1 app/controllers/unsakini/boards_controller.rb
unsakini-0.0.4.3 app/controllers/unsakini/boards_controller.rb