Added user roles and authentication, sign in/out

This commit is contained in:
Jason Denney
2012-12-29 16:22:24 -05:00
parent bb27c7a585
commit db9982dcd2
23 changed files with 232 additions and 89 deletions
+38 -7
View File
@@ -1,15 +1,46 @@
class AppTabPanel < Netzke::Basepack::TabPanel
component :bikes_border
component :brands_and_models_border
component :users_and_profiles_border
component :logs
component :bike_log_form
action :sign_out do |c|
c.icon = :door_out
c.text = "Sign out #{controller.current_user.email}" if controller.current_user
end
def configure(c)
c.active_tab = 3
#all users
@@app_tab_panel_items = [ :bikes_border, :brands_and_models_border]
#for users
if controller.current_user.user?
@@app_tab_panel_items.concat [:user_profile_border]
end
#for admins
if controller.current_user.admin?
@@app_tab_panel_items.concat [:users_and_profiles_border, :logs]
end
@@app_tab_panel_items.each do |item|
self.class.component item
end
c.active_tab = 0
c.prevent_header = true
c.items = [ :bikes_border, :brands_and_models_border, :users_and_profiles_border, :logs, :bike_log_form]
c.tbar = [:sign_out]
c.items = @@app_tab_panel_items
super
end
js_configure do |c|
c.on_sign_out = <<-JS
//this will give a 401 error, but made 401 exceptions forward to 'users/sign_in'
function(){
Ext.Ajax.request({
url: '/users/sign_out',
method: 'DELETE'
});
}
JS
end
end
+9 -15
View File
@@ -2,25 +2,19 @@ class BikeBrands < Netzke::Basepack::Grid
def configure(c)
super
c.model = "BikeBrand"
c.title = "Brands"
=begin
c.columns = [
:done,
:name,
{name: :notes, flex: 1},
:priority,
{name: :due, header: "Due on"}
]
=end
#c.enable_context_menu = false
#c.context_menu = false
#c.enable_edit_in_form = false
#c.scope = {done: [nil, false]}
if controller.current_user.user?
c.prohibit_update = true
c.prohibit_create = true
c.prohibit_delete = true
end
end
#override with nil to remove actions
def default_bbar
[ :apply, :add_in_form, :search ]
bbar = [ :search ]
bbar.concat [ :apply, :add_in_form ] if not controller.current_user.user?
bbar
end
end
+9 -1
View File
@@ -23,6 +23,12 @@ class BikeLogs < Netzke::Basepack::Grid
{ :name => :created_at, :read_only => true},
{ :name => :updated_at, :read_only => true}
]
if controller.current_user.user?
c.prohibit_update = true
c.prohibit_create = true
c.prohibit_delete = true
end
end
@@ -37,6 +43,8 @@ class BikeLogs < Netzke::Basepack::Grid
#override with nil to remove actions
def default_bbar
[ :apply, :add_in_form, :search ]
bbar = [ :search ]
bbar.concat [ :apply, :add_in_form ] if not controller.current_user.user?
bbar
end
end
+15 -8
View File
@@ -3,21 +3,28 @@ class BikeModels < Netzke::Basepack::Grid
super
c.model = "BikeModel"
c.title = "Models"
c.data_store = {auto_load: false}
c.scope = lambda { |rel| puts session.inspect; rel.where(:bike_brand_id => session[:selected_bike_brand_id]);}
#c.strong_default_attrs = lambda { |rel| puts rel.inspect;}
c.strong_default_attrs = {
:bike_brand_id => session[:selected_bike_brand_id]
}
c.columns = [
:model
{ :name => :model }
]
#c.enable_context_menu = false
#c.context_menu = false
#c.enable_edit_in_form = false
#c.scope = {done: [nil, false]}
if controller.current_user.user?
c.prohibit_update = true
c.prohibit_create = true
c.prohibit_delete = true
end
end
#override with nil to remove actions
def default_bbar
[ :apply, :add_in_form, :search ]
bbar = [ :search ]
bbar.concat [ :apply, :add_in_form ] if not controller.current_user.user?
bbar
end
end
+4 -3
View File
@@ -40,10 +40,11 @@ class Bikes < Netzke::Basepack::Grid
// setting the 'rowclick' event
var view = this.getView();
view.on('itemclick', function(view, record){
console.log(view);
console.log(record);
console.log(view);
console.log(record);
// The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server!
this.selectBikeBrand({bike_brand_id: record.get('bike_brand__brand')});
console.log(record.get('bike_brand__brand'));
}, this);
}
JS
@@ -53,7 +54,7 @@ class Bikes < Netzke::Basepack::Grid
# store selected boss id in the session for this component's instance
session[:selected_bike_brand_id] = params[:bike_brand_id]
puts "BikeID-----------------------------"
#puts params[:bike_brand_id]
puts params[:bike_brand_id]
puts session.inspect
end
end
+1 -14
View File
@@ -7,7 +7,6 @@ class BrandsAndModelsBorder < Netzke::Base
super
c.title = "Brands/Models"
c.items = [
# { netzke_component: :bike_brands, region: :center, split: true }
{ netzke_component: :bike_brands, region: :center, split: true },
{ netzke_component: :bike_models, region: :east, width: 500, split: true}
]
@@ -17,7 +16,7 @@ class BrandsAndModelsBorder < Netzke::Base
c.layout = :border
c.border = false
# Overriding initComponent
# Overriding initComponent
c.init_component = <<-JS
function(){
// calling superclass's initComponent
@@ -40,18 +39,6 @@ class BrandsAndModelsBorder < Netzke::Base
puts "BikeBrandID-----------------------------"
#puts params[:bike_brand_id]
puts session.inspect
=begin
brand = BikeBrand.find_by_id(params[:bike_brand_id])
bike_models_grid = component_instance(:bike_models)
bike_models_data = bike_models_grid.get_data
{
:bike_models=> {:load_store_data => bike_models_data, :set_title => "Models for #{brand.brand}"},
}
=end
end
end
+22 -6
View File
@@ -3,15 +3,31 @@ class UserLogs < Netzke::Basepack::Grid
def configure(c)
super
c.model = "ActsAsLoggable::Log"
c.title = "User History"
c.data_store = {auto_load: false}
c.scope = lambda { |rel| puts session.inspect; rel.where(:loggable_type => 'User',:loggable_id => session[:selected_user_id]);}
c.strong_default_attrs = {
#all users
user_log_strong_default_attrs = {
:loggable_type => 'User',
:loggable_id => session[:selected_user_id],
:log_action_type => 'ActsAsLoggable::UserAction'
}
#just users
if controller.current_user.user?
user_log_scope = lambda { |rel| rel.where(:loggable_type => 'User',:loggable_id => controller.current_user.id)}
user_log_strong_default_attrs.merge!( { :loggable_id => controller.current_user.id } )
user_log_data_store = {auto_load: true }
#admins and staff
else
user_log_scope = lambda { |rel| puts session.inspect; rel.where(:loggable_type => 'User',:loggable_id => session[:selected_user_id]);}
user_log_strong_default_attrs.merge!( { :loggable_id => session[:selected_user_id] } )
user_log_data_store = {auto_load: true }
end
c.model = "ActsAsLoggable::Log"
c.title = "User History"
c.data_store = user_log_data_store
c.scope = user_log_scope
puts "user_log_strong_default_attrs"
puts user_log_strong_default_attrs.inspect
c.strong_default_attrs = user_log_strong_default_attrs
c.columns = [
{ :name => :start_date, :format => "g:ia - D, M j - Y", :width => 165, :default_value => Time.now.to_formatted_s(:db) },
{ :name => :end_date, :hidden => true, :default_value => Time.now.to_formatted_s(:db) },
+21
View File
@@ -0,0 +1,21 @@
class UserProfileBorder < Netzke::Base
# Remember regions collapse state and size
include Netzke::Basepack::ItemPersistence
component :user_logs
component :user_profiles
def configure(c)
super
c.title = "Profile"
c.items = [
{ netzke_component: :user_logs, region: :center, split: true},
{ netzke_component: :user_profiles, region: :south, height: 150, split: true }
]
end
js_configure do |c|
c.layout = :border
c.border = false
end
end
+12 -3
View File
@@ -1,10 +1,19 @@
class UserProfiles < Netzke::Basepack::Grid
def configure(c)
super
if controller.current_user.user?
user_profiles_scope = lambda { |rel| rel.where(:user_id => controller.current_user.id);}
user_profiles_data_store = { auto_load: true }
else
user_profiles_scope = lambda { |rel| puts session.inspect; rel.where(:user_id => session[:selected_user_id]);}
user_profiles_data_store = { auto_load: false}
end
c.model = "UserProfile"
c.title = "User Profiles"
c.data_store = {auto_load: false}
c.scope = lambda { |rel| puts session.inspect; rel.where(:user_id => session[:selected_user_id]);}
c.title = "Profile"
c.data_store = user_profiles_data_store
c.scope = user_profiles_scope
c.columns = [
{ :name => :bike__serial_number},
:addrStreet1,
+2 -1
View File
@@ -7,7 +7,8 @@ class Users < Netzke::Basepack::Grid
:first_name,
:last_name,
:nickname,
:email
:email,
:user_role__role
]
end
+3 -3
View File
@@ -10,7 +10,7 @@ class UsersAndProfilesBorder < Netzke::Base
c.title = "Users/Profiles"
c.items = [
{ netzke_component: :users, region: :center, width: 300, split: true },
{ netzke_component: :user_profiles, region: :south, height: 150, split: true},
{ netzke_component: :user_profiles, region: :south, height: 150, split: true},
{ netzke_component: :user_logs, region: :east, split: true}
]
end
@@ -19,7 +19,7 @@ class UsersAndProfilesBorder < Netzke::Base
c.layout = :border
c.border = false
# Overriding initComponent
# Overriding initComponent
c.init_component = <<-JS
function(){
// calling superclass's initComponent
@@ -41,7 +41,7 @@ class UsersAndProfilesBorder < Netzke::Base
# store selected boss id in the session for this component's instance
session[:selected_user_id] = params[:user_id]
puts "UserID-----------------------------"
#puts params[:bike_brand_id]
puts params[:user_id]
puts session.inspect
end