Skip to content

nicksanders/exdjango

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExDjango

Travis Hex.pm Hex.pm

An elixir library for working with django

Warning: This is Alpha software and subject to breaking changes.

Features

  • Django cookie-based sessions
  • Django redis cache sessions
  • Django pbkdf2_sha256 passwords

Installation

Add ex_django to your mix.exs dependencies other dependencies are optional depending on what features you want to use.

defp deps do
[ {:exdjango, "~> 0.4.0"} ]
end

If you need sessions you need to add poison

{:poison, "~> 3.0"},

If you need to read/write django passwords you need to add comeonin

{:comeonin, "~> 3.0"},

Django sessions

Add secret_key to config.exs and add either Cookie or Redis to endpoint.ex Plug config

# config.exs
config :exdjango, :config,
  secret_key: "django-secret-key"

# endpoint.ex
plug Plug.Session,
  store: ExDjango.Session.Cookie,
  key: "sessionid"

or

# config.exs
config :exdjango, :config,
  secret_key: "django-secret-key"
  redis_pool: MyApp.RedixPool

# endpoint.ex
plug Plug.Session,
  store: ExDjango.Session.Redis,
  key: "sessionid"

To use Redis session you need a redis connection pool see https://github.com/whatyouhide/redix for more information.

Set user / get user_id ("_auth_user_id" from django session)

conn
 |> ExDjango.Session.put_user(user)

conn
 |> ExDjango.Session.get_user_id()

Django passwords

ExDjango.Pbkdf2.checkpw(password, user.password)

changeset
|> put_change(:password, ExDjango.Pbkdf2.hashpwsalt(changeset.params["plaintext_password"]))
|> repo.insert()

About

A few elixir libraries for working with django

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages