|
- 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
|