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 qrcode,
13 setuptools-scm,
14 twilio,
15 webauthn,
16}:
17
18buildPythonPackage rec {
19 pname = "django-two-factor-auth";
20 version = "1.15.5";
21 pyproject = true;
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-Sr7L3ioeofyADHb1NSgs0GmVbzX7rro7yhhG9Gq6GJE=";
30 };
31
32 nativeBuildInputs = [
33 setuptools-scm
34 ];
35
36 pythonRelaxDeps = [ "django-phonenumber-field" ];
37
38 propagatedBuildInputs = [
39 django
40 django-formtools
41 django-otp
42 django-phonenumber-field
43 qrcode
44 ];
45
46 passthru.optional-dependencies = {
47 call = [ twilio ];
48 sms = [ twilio ];
49 webauthn = [
50 pydantic
51 webauthn
52 ];
53 # yubikey = [
54 # django-otp-yubikey
55 # ];
56 phonenumbers = [ phonenumbers ];
57 # phonenumberslite = [
58 # phonenumberslite
59 # ];
60 };
61
62 # Tests require internet connection
63 doCheck = false;
64
65 pythonImportsCheck = [ "two_factor" ];
66
67 meta = with lib; {
68 description = "Complete Two-Factor Authentication for Django";
69 homepage = "https://github.com/jazzband/django-two-factor-auth";
70 changelog = "https://github.com/jazzband/django-two-factor-auth/releases/tag/${version}";
71 license = licenses.mit;
72 maintainers = with maintainers; [ derdennisop ];
73 };
74}