zhishi-engine/zhishi-backend

View on GitHub
app/services/token_manager.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "jwt"

class TokenManager
  class << self
    def generate_token(user_id, exp = 24.hours.from_now, notify_object = nil)
      payload = { user: user_id, exp: exp.to_i, payload: notify_object }
      issue_token(payload)
    end

    def issue_token(payload)
      JWT.encode(payload, secret, "HS512")
    end

    def secret
      Rails.application.secrets.secret_key_base
    end

    def decode(token)
      JWT.decode(token, secret, true, algorithm: "HS512")
    end

    def authenticate(token)
      decode(token).first
    rescue
      {}
    end
  end
end