##// END OF EJS Templates
Default columns displayed on the issue list can now be selected at application level....
Default columns displayed on the issue list can now be selected at application level. Saved queries can overide this selection. git-svn-id: http://redmine.rubyforge.org/svn/trunk@785 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r749:650888c73b73
r774:c6e61a5f1976
Show More
account_controller.rb
153 lines | 5.7 KiB | text/x-ruby | RubyLexer
/ app / controllers / account_controller.rb
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class AccountController < ApplicationController
layout 'base'
helper :custom_fields
include CustomFieldsHelper
# prevents login action to be filtered by check_if_login_required application scope filter
skip_before_filter :check_if_login_required, :only => [:login, :lost_password, :register]
# Show user's account
def show
Jean-Philippe Lang
Fixed: non-active users can be viewed with account/show...
r619 @user = User.find_active(params[:id])
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @custom_values = @user.custom_values.find(:all, :include => :custom_field)
Jean-Philippe Lang
Fixed confidentiality issue on account/show....
r564
# show only public projects and private projects that the logged in user is also a member of
@memberships = @user.memberships.select do |membership|
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 membership.project.is_public? || (User.current.role_for_project(membership.project))
Jean-Philippe Lang
Fixed confidentiality issue on account/show....
r564 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 rescue ActiveRecord::RecordNotFound
render_404
end
# Login request and validation
def login
if request.get?
# Logout user
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 self.logged_user = nil
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 else
# Authenticate user
user = User.try_to_login(params[:login], params[:password])
if user
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 self.logged_user = user
Jean-Philippe Lang
Added autologin feature (disabled by default)....
r511 # generate a key and set cookie if autologin
if params[:autologin] && Setting.autologin?
token = Token.create(:user => user, :action => 'autologin')
cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now }
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 redirect_back_or_default :controller => 'my', :action => 'page'
else
Jean-Philippe Lang
Applied the flash notices patch by Matt Jones (slightly edited)....
r597 flash.now[:error] = l(:notice_account_invalid_creditentials)
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
end
end
# Log out current user and redirect to welcome page
def logout
Jean-Philippe Lang
Added autologin feature (disabled by default)....
r511 cookies.delete :autologin
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin']) if User.current.logged?
self.logged_user = nil
Jean-Philippe Lang
Added a named route for the home page....
r749 redirect_to home_url
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
# Enable user to choose a new password
def lost_password
Jean-Philippe Lang
Added a named route for the home page....
r749 redirect_to(home_url) && return unless Setting.lost_password?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 if params[:token]
@token = Token.find_by_action_and_value("recovery", params[:token])
Jean-Philippe Lang
Added a named route for the home page....
r749 redirect_to(home_url) && return unless @token and !@token.expired?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @user = @token.user
if request.post?
@user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
if @user.save
@token.destroy
flash[:notice] = l(:notice_account_password_updated)
redirect_to :action => 'login'
return
end
end
render :template => "account/password_recovery"
return
else
if request.post?
user = User.find_by_mail(params[:mail])
# user not found in db
Jean-Philippe Lang
Applied the flash notices patch by Matt Jones (slightly edited)....
r597 flash.now[:error] = l(:notice_account_unknown_email) and return unless user
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # user uses an external authentification
Jean-Philippe Lang
Applied the flash notices patch by Matt Jones (slightly edited)....
r597 flash.now[:error] = l(:notice_can_t_change_password) and return if user.auth_source_id
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # create a new token for password recovery
token = Token.new(:user => user, :action => "recovery")
if token.save
Mailer.deliver_lost_password(token)
flash[:notice] = l(:notice_account_lost_email_sent)
redirect_to :action => 'login'
return
end
end
end
end
# User self-registration
def register
Jean-Philippe Lang
Added a named route for the home page....
r749 redirect_to(home_url) && return unless Setting.self_registration?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 if params[:token]
token = Token.find_by_action_and_value("register", params[:token])
Jean-Philippe Lang
Added a named route for the home page....
r749 redirect_to(home_url) && return unless token and !token.expired?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 user = token.user
Jean-Philippe Lang
Added a named route for the home page....
r749 redirect_to(home_url) && return unless user.status == User::STATUS_REGISTERED
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 user.status = User::STATUS_ACTIVE
if user.save
token.destroy
flash[:notice] = l(:notice_account_activated)
redirect_to :action => 'login'
return
end
else
if request.get?
@user = User.new(:language => Setting.default_language)
@custom_values = UserCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @user) }
else
@user = User.new(params[:user])
@user.admin = false
@user.login = params[:user][:login]
@user.status = User::STATUS_REGISTERED
@user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
@custom_values = UserCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @user, :value => params["custom_fields"][x.id.to_s]) }
@user.custom_values = @custom_values
token = Token.new(:user => @user, :action => "register")
if @user.save and token.save
Mailer.deliver_register(token)
flash[:notice] = l(:notice_account_register_done)
Jean-Philippe Lang
Applied 'register notice' patch by Matt Jones....
r598 redirect_to :controller => 'account', :action => 'login'
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
end
end
end
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663
private
def logged_user=(user)
if user && user.is_a?(User)
User.current = user
session[:user_id] = user.id
else
User.current = User.anonymous
session[:user_id] = nil
end
end
Jean-Philippe Lang
Initial commit...
r2 end