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.17.0";
21 pyproject = true;
22
23 disabled = pythonOlder "3.7";
24
25 src = fetchFromGitHub {
26 owner = "jazzband";
27 repo = "django-two-factor-auth";
28 tag = version;
29 hash = "sha256-gg5QpPQbYnQr7KkCXFZ9Gnz48Cf4Nm67uV6JuyxK18c=";
30 };
31
32 build-system = [ setuptools-scm ];
33
34 pythonRelaxDeps = [
35 "django-phonenumber-field"
36 "qrcode"
37 ];
38
39 dependencies = [
40 django
41 django-formtools
42 django-otp
43 django-phonenumber-field
44 qrcode
45 ];
46
47 optional-dependencies = {
48 call = [ twilio ];
49 sms = [ twilio ];
50 webauthn = [
51 pydantic
52 webauthn
53 ];
54 # yubikey = [
55 # django-otp-yubikey
56 # ];
57 phonenumbers = [ phonenumbers ];
58 # phonenumberslite = [
59 # phonenumberslite
60 # ];
61 };
62
63 # Tests require internet connection
64 doCheck = false;
65
66 pythonImportsCheck = [ "two_factor" ];
67
68 meta = with lib; {
69 description = "Complete Two-Factor Authentication for Django";
70 homepage = "https://github.com/jazzband/django-two-factor-auth";
71 changelog = "https://github.com/jazzband/django-two-factor-auth/releases/tag/${version}";
72 license = licenses.mit;
73 maintainers = with maintainers; [ derdennisop ];
74 };
75}