Dwarf
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
- [x] HTTP Server
- [x] router.cr
- [x] kemal
- [x] raze
- [x] amber
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
- Fork it ( https://github.com/icyleaf/dwarf/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- icyleaf - creator, maintainer