Dwarf

Status Tag Dependency Status devDependency Status Build Status License

General HTTP Authentication Framework for Crystal, based on HTTP Server Handler means it compatibles with most of web frameworks which is could add http server handler(middlewave), such like kemal, router.cr, raze etc. Inspired from the awesome Ruby's warden gem.

Supperted Frameworks

Ignored Frameworks

Usage

require "dwarf"
# Load the framework plugin appropriate to your project, require one at least.
#
# Common request, support built-in http server, raze
# require "dwarf/services/common"
# Kemal framework
# require "dwarf/services/kemal"
# Amber framework
# require "dwarf/services/kemal"

# Create a password strategy
class PasswordStrategy < Dwarf::Strategies::Base
  def valid?
    params["username"]? && params["password"]?
  end

  def authenticate!
    if params["username"] == "dwarf" && params["password"] == "foobar"
      user = JSON.parse({ "name" => params["username"] }.to_json)
      success!(user)
    else
      fail!
    end
  end
end

# Instance dwarf manager(handler)
dwarf_manager = Dwarf::Manager.new do |config|
  config.register_strategy("password", PasswordStrategy.new)
  config.default_strategies(strategies: ["password"])
end

# Then add `dwarf_manager.handler` to framework's handlers

Here has some examples for usages.

Installation

Add this to your application's shard.yml:

dependencies:
  dwarf:
    github: icyleaf/dwarf

TODO

Contributing

  1. Fork it ( https://github.com/icyleaf/dwarf/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors