Sha256: a1abe0271d4645103e687790c8febff5de732bb48c347f80db57f315c93bcecc

Contents?: true

Size: 1.86 KB

Versions: 6

Compression:

Stored size: 1.86 KB

Contents

module Alchemy
  class PicturesController < Alchemy::BaseController

    caches_page :show, :thumbnail, :zoom

    before_filter :load_picture, :ensure_secure_params

    filter_access_to :show, :attribute_check => true, :model => Alchemy::Picture, :load_method => :load_picture
    filter_access_to :thumbnail

    def show
      @size = params[:size]
      @crop = !params[:crop].nil?
      @crop_from = normalized_size(params[:crop_from])
      @crop_size = params[:crop_size]
      @padding = params[:padding]
      @upsample = !params[:upsample].nil? ? true : false
      @effects = params[:effects]
      respond_to do |format|
        format.jpg
        format.png
        format.gif
      end
    end

    def thumbnail
      case params[:size]
      when "small"
        @size = "80x60"
      when "medium"
        @size = "160x120"
      when "large"
        @size = "240x180"
      when nil
        @size = "111x93"
      else
        @size = params[:size]
      end
      if !params[:crop_size].blank? && !params[:crop_from].blank?
        @crop = true
      elsif params[:crop] == 'crop'
        @default_crop = true
      end
    end

    def zoom
      #
    end

  private

    def normalized_size(size)
      return "" if size.blank?
      size.split("x").map do |s|
        s.to_i < 0 ? 0 : s.to_i
      end.join('x')
    end

    def load_picture
      @picture ||= Picture.find(params[:id])
    end

    def ensure_secure_params
      token = params[:sh]
      digest = Digest::SHA1.hexdigest(secured_params)[0..15]
      bad_request unless token && (token == digest)
    end

    def secured_params
      [params[:id], params[:size], params[:crop], params[:crop_from], params[:crop_size], Rails.configuration.secret_token].join('-')
    end

    def bad_request
      render :text => "Bad picture parameters in #{request.path}", :status => 400
      return false
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
alchemy_cms-2.4.1 app/controllers/alchemy/pictures_controller.rb
alchemy_cms-2.4.0 app/controllers/alchemy/pictures_controller.rb
alchemy_cms-2.4.rc4 app/controllers/alchemy/pictures_controller.rb
alchemy_cms-2.4.rc2 app/controllers/alchemy/pictures_controller.rb
alchemy_cms-2.4.rc1 app/controllers/alchemy/pictures_controller.rb
alchemy_cms-2.4.beta2 app/controllers/alchemy/pictures_controller.rb