Class: LoginController

Inherits:
ApplicationController show all
Defined in:
app/controllers/login_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

current

Instance Method Details

#accept_invitationObject

For invited users.


43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/controllers/login_controller.rb', line 43

def accept_invitation
  @invite = Invite.find_by_token(params[:token])
  if @invite.nil? || @invite.expires_at < Time.now
    redirect_to , alert: I18n.t('login.controller.error_invite_invalid')
  elsif @invite.group.nil?
    redirect_to , alert: I18n.t('login.controller.error_group_invalid')
  elsif request.post?
    User.transaction do
      @user = User.new(params[:user])
      @user.email = @invite.email
      if @user.save
        Membership.new(:user => @user, :group => @invite.group).save!
        @invite.destroy
        session[:locale] = @user.locale
        redirect_to , notice: I18n.t('login.controller.accept_invitation.notice')
      end
    end
  else
    @user = User.new(:email => @invite.email)
  end
end

#forgot_passwordObject

Display the form to enter an email address requesting a token to set a new password.


7
8
9
# File 'app/controllers/login_controller.rb', line 7

def forgot_password
  @user = User.new
end

#new_passwordObject

Set a new password with a token from the password reminder email. Called with params :id => User.id and :token => User.reset_password_token to specify a new password.


25
26
# File 'app/controllers/login_controller.rb', line 25

def new_password
end

#reset_passwordObject

Sends an email to a user with the token that allows setting a new password through action “password”.


12
13
14
15
16
17
18
19
20
21
# File 'app/controllers/login_controller.rb', line 12

def reset_password
  if request.get? || params[:user].nil? # Catch for get request and give better error message.
    redirect_to forgot_password_url, alert: I18n.t('errors.general_again') and return
  end

  if (user = User.undeleted.find_by_email(params[:user][:email]))
    user.request_password_reset!
  end
  redirect_to , :notice => I18n.t('login.controller.reset_password.notice')
end

#update_passwordObject

Sets a new password. Called with params :id => User.id and :token => User.reset_password_token to specify a new password.


30
31
32
33
34
35
36
37
38
39
40
# File 'app/controllers/login_controller.rb', line 30

def update_password
  @user.attributes = params[:user]
  if @user.valid?
    @user.reset_password_token = nil
    @user.reset_password_expires = nil
    @user.save
    redirect_to , :notice => I18n.t('login.controller.update_password.notice')
  else
    render :new_password
  end
end

#validate_tokenObject (protected)


67
68
69
70
71
72
# File 'app/controllers/login_controller.rb', line 67

def validate_token
  @user = User.find_by_id_and_reset_password_token(params[:id], params[:token])
  if (@user.nil? || @user.reset_password_expires < Time.now)
    redirect_to forgot_password_url, alert: I18n.t('login.controller.error_token_invalid')
  end
end