Merge pull request #312 from splendeo/current_user_liquid_extensions
current_user liquid extension
This commit is contained in:
commit
e42a48dfa6
@ -108,4 +108,4 @@ module Extensions
|
|||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
26
lib/locomotive/liquid/drops/current_user.rb
Normal file
26
lib/locomotive/liquid/drops/current_user.rb
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
module Locomotive
|
||||||
|
module Liquid
|
||||||
|
module Drops
|
||||||
|
class CurrentUser < Base
|
||||||
|
|
||||||
|
include ::Rails.application.routes.url_helpers
|
||||||
|
|
||||||
|
def logged_in?
|
||||||
|
_source.present?
|
||||||
|
end
|
||||||
|
def name
|
||||||
|
_source.name if logged_in?
|
||||||
|
end
|
||||||
|
def email
|
||||||
|
_source.email if logged_in?
|
||||||
|
end
|
||||||
|
def logout_path
|
||||||
|
destroy_admin_session_path
|
||||||
|
end
|
||||||
|
def login_path
|
||||||
|
new_admin_session_path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -68,7 +68,8 @@ module Locomotive
|
|||||||
'path' => request.path,
|
'path' => request.path,
|
||||||
'url' => request.url,
|
'url' => request.url,
|
||||||
'now' => Time.now.utc,
|
'now' => Time.now.utc,
|
||||||
'today' => Date.today
|
'today' => Date.today,
|
||||||
|
'current_user' => Locomotive::Liquid::Drops::CurrentUser.new(current_admin)
|
||||||
}
|
}
|
||||||
|
|
||||||
assigns.merge!(Locomotive.config.context_assign_extensions)
|
assigns.merge!(Locomotive.config.context_assign_extensions)
|
||||||
@ -122,4 +123,4 @@ module Locomotive
|
|||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
63
spec/lib/locomotive/liquid/drops/current_user_spec.rb
Normal file
63
spec/lib/locomotive/liquid/drops/current_user_spec.rb
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Locomotive::Liquid::Drops::CurrentUser do
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
@page = FactoryGirl.build(:sub_page)
|
||||||
|
|
||||||
|
@site = @page.site
|
||||||
|
@site.pages.expects(:any_in).returns([@page])
|
||||||
|
|
||||||
|
@controller = Locomotive::TestController.new
|
||||||
|
@controller.stubs(:flash).returns(ActionDispatch::Flash::FlashHash.new())
|
||||||
|
@controller.stubs(:params).returns(:url => '/subpage')
|
||||||
|
@controller.stubs(:request).returns(OpenStruct.new(:url => '/subpage', :fullpath => '/subpage'))
|
||||||
|
@controller.current_site = @site
|
||||||
|
|
||||||
|
@admin = FactoryGirl.build(:admin).account
|
||||||
|
end
|
||||||
|
|
||||||
|
def expect_render(template, text)
|
||||||
|
@page.raw_template = template
|
||||||
|
@page.send(:serialize_template)
|
||||||
|
@controller.expects(:render).with(:text => text, :layout => false, :status => :ok).returns(true)
|
||||||
|
@controller.send(:render_locomotive_page)
|
||||||
|
end
|
||||||
|
|
||||||
|
context '#logged_in?' do
|
||||||
|
it 'returns false when no user is logged in' do
|
||||||
|
expect_render('{{ current_user.logged_in? }}', 'false')
|
||||||
|
end
|
||||||
|
it 'returns true when there is a user logged in' do
|
||||||
|
@controller.expects(:current_admin).twice.returns(true)
|
||||||
|
expect_render('{{ current_user.logged_in? }}', 'true')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context '#name' do
|
||||||
|
it 'returns nothing when no user is logged in' do
|
||||||
|
expect_render('{{ current_user.name }}', '')
|
||||||
|
end
|
||||||
|
it 'returns the username when the user is logged in' do
|
||||||
|
@controller.expects(:current_admin).twice.returns(@admin)
|
||||||
|
expect_render('{{ current_user.name }}', 'Admin')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context '#email' do
|
||||||
|
it 'returns nothing when no user is logged in' do
|
||||||
|
expect_render('{{ current_user.email }}', '')
|
||||||
|
end
|
||||||
|
it 'returns the username when the user is logged in' do
|
||||||
|
@controller.expects(:current_admin).twice.returns(@admin)
|
||||||
|
expect_render('{{ current_user.email }}', 'admin@locomotiveapp.org')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context '#logout_path' do
|
||||||
|
it 'returns the logout url' do
|
||||||
|
expect_render('{{ current_user.logout_path }}', '/admin/sign_out')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user