Commit dfecbe2

mo khan <mo@mokhan.ca>
2016-11-26 04:11:22
respond with a json web token.
1 parent 515dafb
Changed files (5)
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!