This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
require 'digest'
|
||||
|
||||
|
||||
class WikiAssetsController < ApplicationController
|
||||
def index
|
||||
page_id = params[:wiki_page_id].to_i
|
||||
page = WikiPage.find_by(id: page_id)
|
||||
return head :not_found unless page
|
||||
|
||||
render json: page.assets
|
||||
end
|
||||
|
||||
def create
|
||||
return head :unauthorized unless current_user
|
||||
return head :forbidden unless current_user.gte_member?
|
||||
|
||||
wiki_page_id = params[:wiki_page_id].to_i
|
||||
page = WikiPage.find_by(id: wiki_page_id)
|
||||
return head :not_found unless page
|
||||
|
||||
file = params[:file]
|
||||
return head :bad_request if file.blank?
|
||||
|
||||
page.with_lock do
|
||||
no = page.next_asset_no
|
||||
alt_text = params[:alt_text].presence
|
||||
sha256 = Digest::SHA256.file(file.tempfile.path).digest
|
||||
|
||||
asset = WikiAsset.new(wiki_page_id:, no:, alt_text:, sha256:, created_by_user: current_user)
|
||||
asset.file.attach(file)
|
||||
asset.save!
|
||||
|
||||
page.update!(next_asset_no: no + 1)
|
||||
end
|
||||
|
||||
render json: asset
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user