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