Skip to content

Instantly share code, notes, and snippets.

@mosinski
Last active August 29, 2015 14:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mosinski/99b16828b05cb47ecc92 to your computer and use it in GitHub Desktop.
Save mosinski/99b16828b05cb47ecc92 to your computer and use it in GitHub Desktop.
Basic Spree Backend

Set up a Spree backend only install

rails new your-store-name

Gemfile

gem 'spree_backend', github: 'spree/spree'
gem 'devise'

Install Spree and Devise

rails g spree:install --sample=false --seed=false
rails g devise:install    
rails g devise User  
    
bundle exec rake db:migrate  

This should go in your User model

has_and_belongs_to_many :spree_roles

def has_spree_role?(role)
  self.spree_roles.all.include? role
end
  • Generate custom user set up for spree
rails g spree:custom_user User
  • Change Spree.user class to User on initializer spree.rb
Spree.user_class = "User"
  • Add fields to custom user
bundle exec rake db:migrate
  • Remove both all.css and all.js
rm vendor/assets/javascripts/spree/frontend/all.js
rm vendor/assets/stylesheets/spree/frontend/all.css

Make sure your config/routes.rb look like this

Rails.application.routes.draw do
  root to: "spree/admin/orders#index"
  mount Spree::Core::Engine, :at => '/'

  devise_for :users
end

Point spree_signup_path to login page in lib/spree/authentication_helper.rb

# since we don't need signup on a backend install
def spree_login_path
  '/users/sign_in'
end

def spree_signup_path
  '/users/sign_up'
end

def spree_logout_path
  '/users/sign_out'
end

Create admin user via rails console

user = User.create(email: "spree@example.com", password: "spree123")
user.spree_roles << Spree::Role.find_or_create_by(name: "admin")

Deface admin layout template to add logout link

Create this file in app/overrides/add_logout_to_admin_panel.rb

Deface::Override.new(virtual_path: 'spree/admin/shared/_tabs',
                     name: 'add_logout_to_admin_panel',
                     insert_after: "erb[loud]:contains('users')",
                     text: "<li class='tab-with-icon'>
                              <%= link_to(main_app.destroy_user_session_path, method: :delete, class: 'fa fa-sign-out icon_link with-tip') do %>
                                <span class='text'>LOGOUT</span>
                              <% end %>
                            </li>")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment