class UserController < ApplicationController
layout :choose_layout
+ skip_before_filter :verify_authenticity_token, :only => [:api_details, :api_gpx_files]
before_filter :disable_terms_redirect, :only => [:terms, :save, :logout, :api_details]
before_filter :authorize, :only => [:api_details, :api_gpx_files]
before_filter :authorize_web, :except => [:api_details, :api_gpx_files]
if params[:user] and params[:user][:openid_url] and @user.pass_crypt.empty?
# We are creating an account with OpenID and no password
# was specified so create a random one
- @user.pass_crypt = ActiveSupport::SecureRandom.base64(16)
+ @user.pass_crypt = SecureRandom.base64(16)
@user.pass_crypt_confirmation = @user.pass_crypt
end
def account
@title = t 'user.account.title'
- @tokens = @user.oauth_tokens.where('oauth_tokens.invalidated_at is null and oauth_tokens.authorized_at is not null')
+ @tokens = @user.oauth_tokens.authorized
if params[:user] and params[:user][:display_name] and params[:user][:description]
@user.display_name = params[:user][:display_name]
@title = t 'user.lost_password.title'
if params[:user] and params[:user][:email]
- user = User.where(:email => params[:user][:email], :status => ["pending", "active", "confirmed"]).first
+ user = User.visible.where(:email => params[:user][:email]).first
if user
token = user.tokens.create
@title = t 'user.new.title'
@referer = params[:referer] || session[:referer]
- if session[:user]
+ if @user
# The user is logged in already, so don't show them the signup
# page, instead send them to the home page
- redirect_to :controller => 'site', :action => 'index'
- elsif not params['openid'].nil?
+ if @referer
+ redirect_to @referer
+ else
+ redirect_to :controller => 'site', :action => 'index'
+ end
+ elsif params.key?(:openid)
+ @user = User.new(:email => params[:email],
+ :email_confirmation => params[:email],
+ :display_name => params[:nickname],
+ :openid_url => params[:openid])
+
flash.now[:notice] = t 'user.new.openid association'
end
end
token.destroy
session[:user] = user.id
+ cookies.permanent["_osm_username"] = user.display_name
if referer.nil?
flash[:notice] = t('user.confirm.success') + "<br /><br />" + t('user.confirm.before you start')
end
token.destroy
session[:user] = @user.id
+ cookies.permanent["_osm_username"] = @user.display_name
redirect_to :action => 'account', :display_name => @user.display_name
else
flash[:error] = t 'user.confirm_email.failure'
def make_friend
if params[:display_name]
name = params[:display_name]
- new_friend = User.where(:display_name => name, :status => ["active", "confirmed"]).first
+ new_friend = User.active.where(:display_name => name).first
friend = Friend.new
friend.user_id = @user.id
friend.friend_user_id = new_friend.id
def remove_friend
if params[:display_name]
name = params[:display_name]
- friend = User.where(:display_name => name, :status => ["active", "confirmed"]).first
+ friend = User.active.where(:display_name => name).first
if @user.is_friends_with?(friend)
Friend.delete_all "user_id = #{@user.id} AND friend_user_id = #{friend.id}"
flash[:notice] = t 'user.remove_friend.success', :name => friend.display_name
end
# Start the authentication
- authenticate_with_open_id(openid_expand_url(openid_url), :required => required) do |result, identity_url, sreg, ax|
+ authenticate_with_open_id(openid_expand_url(openid_url), :method => :get, :required => required) do |result, identity_url, sreg, ax|
if result.successful?
# We need to use the openid url passed back from the OpenID provider
# rather than the one supplied by the user, as these can be different.
def openid_verify(openid_url, user)
user.openid_url = openid_url
- authenticate_with_open_id(openid_expand_url(openid_url)) do |result, identity_url|
+ authenticate_with_open_id(openid_expand_url(openid_url), :method => :get) do |result, identity_url|
if result.successful?
# We need to use the openid url passed back from the OpenID provider
# rather than the one supplied by the user, as these can be different.
##
# process a successful login
def successful_login(user)
+ cookies.permanent["_osm_username"] = user.display_name
+
session[:user] = user.id
session_expires_after 1.month if session[:remember_me]