Skip to content
This repository has been archived by the owner on Jul 24, 2019. It is now read-only.
/ dwarf Public archive

**Unmaintained** General HTTP Authentication Framework for Crystal

License

Notifications You must be signed in to change notification settings

icyleaf/dwarf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  • Stores(session)
  • Callbacks

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

Releases

No releases published

Packages

No packages published