Sha256: ae6a9580d51970c2bd3e2252776fdad8612b04fdae66ee0b9472ba0ab7b6fefb
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
require "jwt" class Card module Auth # methods for setting current account module Token SECRET_KEY = Rails.application.credentials.secret_key_base.to_s class << self def encode user_id, extra_payload={} payload = { user_id: user_id, exp: expiration }.merge(extra_payload) JWT.encode payload, SECRET_KEY end # returns Hash if valid, String error message if not def validate! token payload = decode token raise Card::Error::PermissionDenied, payload if payload.is_a? String payload end def decode token decoded = JWT.decode(token, SECRET_KEY)[0] HashWithIndifferentAccess.new decoded rescue StandardError => e e.message end def expiration Card.config.token_expiry.from_now.to_i end end # set the current user based on token def signin_with_token token payload = Token.validate! token signin payload[:anonymous] ? Card::AnonymousID : payload[:user_id] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
card-1.108.1 | lib/card/auth/token.rb |
card-1.108.0 | lib/card/auth/token.rb |