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