Skip to content

Instantly share code, notes, and snippets.

@pixeltrix
Last active May 26, 2020 10:15
Show Gist options
  • Save pixeltrix/b408f9be9f7aaaebc4f2c7d6088cd039 to your computer and use it in GitHub Desktop.
Save pixeltrix/b408f9be9f7aaaebc4f2c7d6088cd039 to your computer and use it in GitHub Desktop.

Revisions

  1. pixeltrix revised this gist May 26, 2020. 1 changed file with 22 additions and 0 deletions.
    22 changes: 22 additions & 0 deletions users_controller.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    class UsersController < ApplicationController

    respond_to :json

    def update
    new_password = params[:user] && params[:user][:password]
    token = params[:authentication_token]

    if !new_password
    render_errors({"password"=>["can't be blank"]}.to_json)
    elsif (user = User.for_authentication_token(token))
    if user.suspended?
    render_forbidden user.inactive_message
    else
    setter = PasswordSetter.new(user)
    setter.set_password new_password, self
    end
    else
    render_unauthorized
    end
    end
    end
  2. pixeltrix revised this gist May 26, 2020. 1 changed file with 30 additions and 0 deletions.
    30 changes: 30 additions & 0 deletions activations_controller.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    class ActivationsController < ApplicationController

    respond_to :json

    def create
    new_password = params[:user] && params[:user][:password]
    token = params[:confirmation_token]

    if !new_password
    render_errors({"password"=>["can't be blank"]}.to_json)

    elsif (@user = User.for_confirmation_token(token))

    if @user.try(:suspended?)
    render_unauthorized @user.inactive_message
    else
    setter = PasswordSetter.new(@user)
    setter.set_password new_password, self
    end
    else
    render_unauthorized
    end
    end

    def render_success
    @user.confirm!
    super
    end

    end
  3. pixeltrix created this gist May 26, 2020.
    18 changes: 18 additions & 0 deletions password_setter.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    class PasswordSetter

    def initialize user
    @user = user
    end

    def set_password password, responder
    @user.password = password
    if @user.valid?
    @user.save!
    responder.render_success
    else
    errors = @user.errors.messages.to_json
    responder.render_errors errors
    end
    end

    end