- small fixes
[opensuse:software-o-o.git] / app / controllers / order_controller.rb
1 class OrderController < ApplicationController
2   session :disabled => false
3   before_filter :require_auth, :except => [:new, :save, :thanks]
4
5   def new
6     @order = Order.new params[:order]
7     render :template => 'order/pause'
8   end
9
10   def save
11     @order = Order.new params[:order]
12     if @order.save
13       Promomailer.deliver_promo_order @order
14       redirect_to "/order/thanks"
15     else
16       flash[:save_errors] = @order.errors.full_messages
17       redirect_to :action => "new", :order => params[:order]
18     end
19   end
20
21   def thanks
22   end
23
24   # admin stuff
25   def require_auth
26     auth = request.env['HTTP_AUTHORIZATION'].to_s.split
27
28     if auth and auth[0] == "Basic"
29       login, pw = Base64.decode64(auth[1]).split(':')[0..1]
30       pw ||= ""
31       if login == "admin" and pw == "secret"
32         @user = session[:admin_user]
33         return true
34       end
35     end
36
37     response.headers["WWW-Authenticate"] = 'basic realm="software.opensuse.org admin login"'
38     render :text => "authentication required", :status => 401
39     return false
40   end
41   private :require_auth
42
43   def admin_index
44     @orders = Order.find :all, :conditions => "isnull(processed_by)"
45   end
46
47   def change_name
48     session[:admin_user] = params[:name]
49     redirect_to :action => :admin_index
50   end
51
52   def logout
53     session[:admin_user] = nil
54     redirect_to :action => :admin_index
55   end
56
57   def process_order
58     @order = Order.find params[:id]
59     @order.processed_at = Time.now
60     @order.processed_by = session[:admin_user]
61
62     @order.save
63     
64     render :partial => 'order', :object => @order
65   end
66 end