class WikiPagesController < ApplicationController def show wiki_page = WikiPage.find(params[:id]) return head :not_found unless wiki_page render json: wiki_page.as_json.merge(body: wiki_page.body) end def show_by_title wiki_page = WikiPage.find_by(title: params[:title]) return head :not_found unless wiki_page render json: wiki_page.as_json.merge(body: wiki_page.body) end def create return head :unauthorized unless current_user return head :forbidden unless ['admin', 'member'].include?(current_user.role) wiki_page = WikiPage.new(title: params[:title], created_user: current_user, updated_user: current_user) if wiki_page.save wiki_page.set_body params[:body], user: current_user render json: wiki_page, status: :created else render json: { errors: wiki_page.errors.full_messages }, status: :unprocessable_entity end end def update return head :unauthorized unless current_user return head :forbidden unless ['admin', 'member'].include?(current_user.role) wiki_page = WikiPage.find(params[:id]) return head :not_found unless wiki_page wiki_page.updated_user = current_user wiki_page.set_body params[:body], user: current_user wiki_page.save! head :ok end def search q = WikiPage.all if params[:title].present? title = params[:title].to_s.strip q = q.where('title LIKE ?', "%#{ WikiPage.sanitize_sql_like(title) }%") end render json: q.limit(20) end end