Commit dfecbe2
Changed files (5)
app
controllers
config
initializers
app/controllers/api/sessions_controller.rb
@@ -1,7 +1,13 @@
class Api::SessionsController < Api::Controller
def create
user_session = User.login(params[:username], params[:password])
- token = user_session.access(request)
+ token = tokenize(user_session.access(request))
render json: { authentication_token: token }
end
+
+ private
+
+ def tokenize(session_id)
+ JsonWebToken.encode(session_id: session_id)
+ end
end
config/initializers/jwt.rb
@@ -0,0 +1,1 @@
+require 'json_web_token'
lib/json_web_token.rb
@@ -0,0 +1,11 @@
+class JsonWebToken
+ def self.encode(payload)
+ JWT.encode(payload, Rails.application.secrets.secret_key_base)
+ end
+
+ def self.decode(token)
+ HashWithIndifferentAccess.new(JWT.decode(token, Rails.application.secrets.secret_key_base))
+ rescue
+ nil
+ end
+end
Gemfile
@@ -71,6 +71,7 @@ source "https://rubygems.org" do
gem "web-console", group: :development
gem "webmock", group: :test
gem "yelp"
+ gem "jwt"
end
source "https://rails-assets.org" do
Gemfile.lock
@@ -203,6 +203,7 @@ GEM
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (1.8.3)
+ jwt (1.5.6)
kaminari (0.17.0)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
@@ -470,6 +471,7 @@ DEPENDENCIES
i18n-tasks!
jbuilder (~> 2.5)!
jquery-rails!
+ jwt!
kaminari!
listen (~> 3.0.5)!
meta_request!