Add pickups role

This commit is contained in:
Patrick Gansterer 2017-11-15 23:58:11 +01:00
parent 4c41a99fde
commit ac11ba1cc1
14 changed files with 42 additions and 15 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

View file

@ -68,9 +68,11 @@ class ApplicationController < ActionController::Base
when "admin" then current_user.role_admin?
when "finance" then current_user.role_finance?
when "article_meta" then current_user.role_article_meta?
when "pickups" then current_user.role_pickups?
when "suppliers" then current_user.role_suppliers?
when "orders" then current_user.role_orders?
when "finance_or_orders" then (current_user.role_finance? || current_user.role_orders?)
when "pickups_or_orders" then (current_user.role_pickups? || current_user.role_orders?)
when "any" then true # no role required
else false # any unknown role will always fail
end
@ -81,19 +83,23 @@ class ApplicationController < ActionController::Base
end
end
end
def authenticate_admin
authenticate('admin')
end
def authenticate_finance
authenticate('finance')
end
def authenticate_article_meta
authenticate('article_meta')
end
def authenticate_pickups
authenticate('pickups')
end
def authenticate_suppliers
authenticate('suppliers')
end
@ -106,6 +112,10 @@ class ApplicationController < ActionController::Base
authenticate('finance_or_orders')
end
def authenticate_pickups_or_orders
authenticate('pickups_or_orders')
end
# checks if the current_user is member of given group.
# if fails the user will redirected to startpage
def authenticate_membership_or_admin(group_id = params[:id])

View file

@ -4,7 +4,8 @@
# Normal ordering actions of members of order groups is handled by the OrderingController.
class OrdersController < ApplicationController
before_filter :authenticate_orders
before_filter :authenticate_pickups_or_orders
before_filter :authenticate_orders, except: [:receive, :receive_on_order_article_create, :receive_on_order_article_update, :show]
before_filter :remove_empty_article, only: [:create, :update]
# List orders

View file

@ -1,5 +1,7 @@
class PickupsController < ApplicationController
before_filter :authenticate_pickups
def index
@orders = Order.finished_not_closed.order('pickup DESC').group_by { |o| o.pickup }
end

View file

@ -150,7 +150,7 @@ module ApplicationHelper
end
def format_roles(record, icon=false)
roles = %w(suppliers article_meta orders finance invoices admin)
roles = %w(suppliers article_meta orders pickups finance invoices admin)
roles.select! {|role| record.send "role_#{role}?"}
names = Hash[roles.map{|r| [r, I18n.t("helpers.application.role_#{r}")]}]
if icon

View file

@ -159,17 +159,22 @@ class User < ActiveRecord::Base
def role_article_meta?
groups.detect {|group| group.role_article_meta?}
end
# Checks the suppliers role
def role_suppliers?
groups.detect {|group| group.role_suppliers?}
end
# Checks the invoices role
def role_pickups?
groups.detect {|group| group.role_pickups?}
end
# Checks the orders role
def role_orders?
groups.detect {|group| group.role_orders?}
end
def ordergroup_name
ordergroup ? ordergroup.name : I18n.t('model.user.no_ordergroup')
end
@ -178,7 +183,7 @@ class User < ActiveRecord::Base
def member_of?(group)
group.users.exists?(self.id)
end
#Returns an array with the users groups (but without the Ordergroups -> because tpye=>"")
def member_of_groups()
self.groups.where(type: '')

View file

@ -7,6 +7,7 @@
= f.input :role_suppliers
= f.input :role_article_meta
= f.input :role_orders
= f.input :role_pickups
= f.input :role_finance
= f.input :role_invoices
= f.input :role_admin

View file

@ -24,10 +24,7 @@
%tr
%td
= check_box_tag "orders[]", order.id, true #, style: 'float:left'
- if current_user.role_orders?
= link_to order.name, order_path(order)
- else
= order.name
= link_to order.name, order_path(order)
%td= truncate order.note
%td{style:'white-space:nowrap'}
= render 'shared/order_download_button', order: order, klass: 'btn-small'

View file

@ -220,6 +220,7 @@ de:
role_finance: Finanzen
role_invoices: Rechnungen
role_orders: Bestellverwaltung
role_pickups: Abholtage
role_suppliers: Lieferanten
user_tokens: Mitglieder
errors:
@ -1082,6 +1083,7 @@ de:
role_finance: Finanzen
role_invoices: Rechnungen
role_orders: Bestellung
role_pickups: Abholtage
role_suppliers: Lieferanten
show_google_maps: Show it on Google maps
sort_by: Nach %{text} sortieren

View file

@ -220,6 +220,7 @@ en:
role_finance: Finances
role_invoices: Invoices
role_orders: Order management
role_pickups: Pickup days
role_suppliers: Suppliers
user_tokens: Members
errors:
@ -1084,6 +1085,7 @@ en:
role_finance: Finance
role_invoices: Invoices
role_orders: Orders
role_pickups: Pickup days
role_suppliers: Suppliers
show_google_maps: Show it on Google maps
sort_by: Sort by %{text}

View file

@ -24,7 +24,7 @@ SimpleNavigation::Configuration.run do |navigation|
subnav.item :ordering, I18n.t('navigation.orders.ordering'), group_orders_path
subnav.item :ordering_archive, I18n.t('navigation.orders.archive'), archive_group_orders_path
subnav.item :orders, I18n.t('navigation.orders.manage'), orders_path, if: Proc.new { current_user.role_orders? }
subnav.item :pickups, I18n.t('navigation.orders.pickups'), pickups_path, if: Proc.new { current_user.role_orders? }
subnav.item :pickups, I18n.t('navigation.orders.pickups'), pickups_path, if: Proc.new { current_user.role_pickups? }
end
primary.item :articles, I18n.t('navigation.articles.title'), '#',

View file

@ -0,0 +1,5 @@
class AddRolePickupsToGroup < ActiveRecord::Migration
def change
add_column :groups, :role_pickups, :boolean, default: false, null: false
end
end

View file

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20171110000000) do
ActiveRecord::Schema.define(version: 20171111000000) do
create_table "article_categories", force: :cascade do |t|
t.string "name", limit: 255, default: "", null: false
@ -170,6 +170,7 @@ ActiveRecord::Schema.define(version: 20171110000000) do
t.boolean "role_invoices", default: false, null: false
t.date "break_start"
t.date "break_end"
t.boolean "role_pickups", default: false, null: false
end
add_index "groups", ["name"], name: "index_groups_on_name", unique: true, using: :btree

View file

@ -7,6 +7,7 @@ administrators = Workgroup.create(
:role_admin => true,
:role_finance => true,
:role_article_meta => true,
:role_pickups => true,
:role_suppliers => true,
:role_orders => true
)