Sha256: bf4e7ebeb5852d7af068973c6a8d0429bf6cac5460140274cedf61c83ef42cf4

Contents?: true

Size: 1.51 KB

Versions: 13

Compression:

Stored size: 1.51 KB

Contents

class Dummy::Sessions < Grape::API

  resource :sessions do

    desc "create a user session" do
      detail "sign in a user"
    end
    params do
      requires :login,        type: String,  desc: "email address"
      requires :password,     type: String,  desc: "password"
      optional :token,        type: Boolean, desc: "set to true to generate and return Firebase secure token", default: false
    end
    post '/' do
      authorize User.new, :sessions?
      user = User.find_first_by_auth_conditions({email: params[:login]})
      if user && user.valid_password?(params[:password]) && user.valid_for_authentication?

        # commented out for now, User model is not yet confirmable
        #unauthenticated! DummyAPI::USER_NOT_CONFIRMED unless user.confirmed?

        token = nil
        if params[:token]
          user.authentication_token = SecureRandom.urlsafe_base64(nil, false)
          user.save
        end

        #user.ensure_authentication_token!
        env['warden'].set_user(user, scope: :user)
        present user, with: Dummy::Entities::User, token: token
      else
        unauthenticated! DummyAPI::BAD_LOGIN
      end
    end


    desc "delete a user session" do
      detail "sign out the current user" 
    end
    delete '/' do
      authorize User.new, :sessions?
      u = User.find_by_authentication_token(params[:api_key])
      if u 
        u.authentication_token = nil
        {status: u.save!}
      else
        {status: true } # the user is already logged out
      end
    end 

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
introspective_grape-0.3.2 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.3.1 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.3.0 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.9 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.8 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.7 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.6 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.5 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.4 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.3 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.2 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.2.0 spec/dummy/app/api/dummy/sessions.rb
introspective_grape-0.1.9 spec/dummy/app/api/dummy/sessions.rb