require 'active_support/core_ext/object/blank'
require 'active_support/core_ext/string/inflections'

module <%= @app_name %>
  class <%= @admin_name %> < Padrino::Application
    register Padrino::Mailer
    register Padrino::Helpers
    register Padrino::Admin::AccessControl

    ##
    # Application configuration options
    #
    # set :raise_errors, true         # Raise exceptions (will stop application) (default for test)
    # set :dump_errors, true          # Exception backtraces are written to STDERR (default for production/development)
    # set :show_exceptions, true      # Shows a stack trace in browser (default for development)
    # set :logging, true              # Logging in STDOUT for development and file for production (default only for development)
    # set :public_folder, 'foo/bar'   # Location for static assets (default root/public)
    # set :reload, false              # Reload application files (default in development)
    # set :default_builder, 'foo'     # Set a custom form builder (default 'StandardFormBuilder')
    # set :locale_path, 'bar'         # Set path for I18n translations (default your_app/locales)
    # disable :sessions               # Disabled sessions by default (enable if needed)
    # disable :flash                  # Disables sinatra-flash (enabled by default if Sinatra::Flash is defined)
    # layout  :my_layout              # Layout can be in views/layouts/foo.ext or views/foo.ext (default :application)
    #

    set :admin_model, '<%= @model_name %>'
    set :login_page,  '/sessions/new'

    enable  :sessions
    disable :store_location

    access_control.roles_for :any do |role|
      role.protect '/'
      role.allow   '/sessions'
    end

    access_control.roles_for :admin do |role|
    end

    # Custom error management
    error(403) { @title = 'Error 403'; render('errors/403', layout: :error) }
    error(404) { @title = 'Error 404'; render('errors/404', layout: :error) }
    error(500) { @title = 'Error 500'; render('errors/500', layout: :error) }
  end
end
