Sha256: 788ace079199dc7b66f51925b17f99c16eca9057af320a70750cc5942b07fa08

Contents?: true

Size: 1.65 KB

Versions: 18

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

module Warden
  module JWTAuth
    # Interfaces expected to be implemented in applications working with this
    # gem
    module Interfaces
      # Repository that returns [User]
      class UserRepository
        # Finds and returns an [User]
        #
        # @param _sub [String] JWT sub claim
        # @return [User]
        def find_for_jwt_authentication(_sub)
          raise NotImplementedError
        end
      end

      # An user
      class User
        # What will be encoded as `sub` claim. It must respond to `#to_s`.
        #
        # @return [#to_s] `sub` claim
        def jwt_subject
          raise NotImplementedError
        end

        # Allows adding extra claims to be encoded within the payload
        #
        # @return [Hash] claims to be merged with defaults
        def jwt_payload
          {}
        end

        # Does something just after a JWT for the user has been dispatched.
        #
        # @param _token [String]
        # @param _payload [Hash]
        def on_jwt_dispatch(_token, _payload)
          raise NotImplementedError
        end
      end

      # Strategy to manage JWT revocation
      class RevocationStrategy
        # Does something to revoke a JWT payload
        #
        # @param _payload [Hash]
        # @param _user [User]
        def revoke_jwt(_payload, _user)
          raise NotImplementedError
        end

        # Returns whether a JWT payload is revoked
        #
        # @param _payload [Hash]
        # @param _user [User]
        # @return [Boolean]
        def jwt_revoked?(_payload, _user)
          raise NotImplementedError
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
warden-jwt_auth-0.11.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.10.1 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.10.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.9.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.8.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.7.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.6.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.5.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.4.2 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.4.1 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.4.0 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.3.6 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.3.5 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.3.4 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.3.3 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.3.2 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.3.1 lib/warden/jwt_auth/interfaces.rb
warden-jwt_auth-0.3.0 lib/warden/jwt_auth/interfaces.rb