1{ lib
2, buildPythonPackage
3, django
4, django-formtools
5, django-otp
6, django-phonenumber-field
7, fetchFromGitHub
8, phonenumbers
9, pydantic
10, pythonOlder
11, pythonRelaxDepsHook
12, qrcode
13, setuptools-scm
14, twilio
15, webauthn
16}:
17
18buildPythonPackage rec {
19 pname = "django-two-factor-auth";
20 version = "1.15.1";
21 format = "setuptools";
22
23 disabled = pythonOlder "3.7";
24
25 src = fetchFromGitHub {
26 owner = "jazzband";
27 repo = "django-two-factor-auth";
28 rev = "refs/tags/${version}";
29 hash = "sha256-+E6kSD00ChPiRLT2i43dNlVkbvuR1vKkbSZfD1Bf3qc=";
30 };
31
32 nativeBuildInputs = [
33 pythonRelaxDepsHook
34 setuptools-scm
35 ];
36
37 pythonRelaxDeps = [
38 "django-phonenumber-field"
39 ];
40
41 propagatedBuildInputs = [
42 django
43 django-formtools
44 django-otp
45 django-phonenumber-field
46 qrcode
47 ];
48
49 passthru.optional-dependencies = {
50 call = [
51 twilio
52 ];
53 sms = [
54 twilio
55 ];
56 webauthn = [
57 pydantic
58 webauthn
59 ];
60 # yubikey = [
61 # django-otp-yubikey
62 # ];
63 phonenumbers = [
64 phonenumbers
65 ];
66 # phonenumberslite = [
67 # phonenumberslite
68 # ];
69 };
70
71 # Tests require internet connection
72 doCheck = false;
73
74 pythonImportsCheck = [
75 "two_factor"
76 ];
77
78 meta = with lib; {
79 description = "Complete Two-Factor Authentication for Django";
80 homepage = "https://github.com/jazzband/django-two-factor-auth";
81 changelog = "https://github.com/jazzband/django-two-factor-auth/releases/tag/${version}";
82 license = licenses.mit;
83 maintainers = with maintainers; [ derdennisop ];
84 };
85}