Atom feeds for events
[gitorious:yousource.git] / app / controllers / users_controller.rb
1 class UsersController < ApplicationController
2   # render new.rhtml
3   def new
4   end
5   
6   def show
7     @user = User.find_by_login!(params[:id])
8     @projects = @user.projects.find(:all, :include => [:tags, { :repositories => :project }])
9     @repositories = @user.repositories.find(:all, :conditions => ["mainline = ?", false])
10     @events = @user.events.paginate(:all, 
11       :page => params[:page],
12       :order => "events.created_at desc", 
13       :include => [:user, :project])
14     
15     @commits_last_week = @user.events.count(:all, 
16       :conditions => ["created_at > ? AND action = ?", 7.days.ago, Action::COMMIT])
17     @atom_auto_discovery_url = formatted_user_path(@user, :atom)
18     
19     respond_to do |format|
20       format.html { }
21       format.atom { }
22     end
23   end
24
25   def create
26     @user = User.new(params[:user])
27     @user.login = params[:user][:login]
28     @user.save!    
29     flash[:notice] = "Thanks for signing up! You will receive an account activation email soon"
30     redirect_to root_path
31   rescue ActiveRecord::RecordInvalid
32     render :action => 'new'
33   end
34
35   def activate
36     if user = User.find_by_activation_code(params[:activation_code])
37       self.current_user = user
38       if logged_in? && !current_user.activated?
39         current_user.activate
40         flash[:notice] = "Your account has been activated, welcome!"
41       end
42     else
43       flash[:error] = "Invalid activation code"
44     end
45     redirect_back_or_default('/')
46   end
47   
48   def forgot_password
49   end
50     
51   def reset_password
52     if params[:user] && user = User.find_by_email(params[:user][:email])
53       # FIXME: should really be a two-step process: receive link, visiting it resets password
54       generated_password = user.reset_password!
55       Mailer.deliver_forgotten_password(user, generated_password)
56       flash[:notice] = "A new password has been sent to your email"
57       redirect_to(root_path)
58     else
59       flash[:error] = "Invalid email"
60       redirect_to forgot_password_users_path
61     end
62   end
63 end