diff --git a/Pipfile.lock b/Pipfile.lock index e6b05fe61..290c815d0 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -56,7 +56,6 @@ "sha256:f881853d2643a29e643609da57b96d5f9c9b93f62429dcc1cbb413c7d07f0e1a", "sha256:fe60131d21b31fd1a14bd43e6bb88256f69dfc3188b3a89d736d6c71ed43ec95" ], - "markers": "python_version >= '3.6'", "version": "==3.7.4.post0" }, "aioredis": { @@ -71,7 +70,6 @@ "sha256:03e16e94f2b34c31f8bf1206d8ddd3ccaa4c315f7f6a1879b7b1210d229568c2", "sha256:493a2ac6788ce270a2f6a765b017299f60c1998f5a8617908ee9be082f7300fb" ], - "markers": "python_version >= '3.6'", "version": "==5.0.6" }, "asgiref": { @@ -79,7 +77,6 @@ "sha256:92906c611ce6c967347bbfea733f13d6313901d54dcca88195eaeb52b2a8e8ee", "sha256:d1216dfbdfb63826470995d31caed36225dcaf34f182e0fa257a4dd9e86f1b78" ], - "markers": "python_version >= '3.6'", "version": "==3.3.4" }, "async-timeout": { @@ -87,7 +84,6 @@ "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f", "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3" ], - "markers": "python_full_version >= '3.5.3'", "version": "==3.0.1" }, "attrs": { @@ -95,7 +91,6 @@ "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==20.3.0" }, "autobahn": { @@ -103,7 +98,6 @@ "sha256:9195df8af03b0ff29ccd4b7f5abbde957ee90273465942205f9a1bad6c3f07ac", "sha256:e126c1f583e872fb59e79d36977cfa1f2d0a8a79f90ae31f406faae7664b8e03" ], - "markers": "python_version >= '3.7'", "version": "==21.3.1" }, "automat": { @@ -122,28 +116,23 @@ }, "boto3": { "hashes": [ - "sha256:d5ef160442925f5944e4cde88589f0f195f6c284f05613114fc6bbc35e342fa7", - "sha256:df5912350e092e795f72d8047a44d3f5af9690317acfe48147b9853a2f89b304", - "sha256:a482135c30fa07eaf4370314dd0fb49117222a266d0423b2075aed3835ed1f04", - "sha256:e86c15049dc07cb67e8b466795f004f1f23c1acf078d47283cd5e4a692a5aa37" + "sha256:f7447d84c3e1381bb3cc61ceb360dab47e91ebd133725dbd6d98946f11e234d3" ], "index": "pypi", - "version": "==1.17.49" + "version": "==1.17.50" }, "botocore": { "hashes": [ - "sha256:6a672ba41dd00e5c1c1824ca8143d180d88de8736d78c0b1f96b8d3cb0466561", - "sha256:f7f103fa0651c69dd360c7d0ecd874854303de5cc0869e0cbc2818a52baacc69" + "sha256:a621a4bf60a1197c7ebd8ed0badac8282e36e0cee7241831a099200983ff7c49", + "sha256:f6c2bfae21eaa4e4f75fc5f48b22b16831356755bfb58516219ee11d74070220" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.20.49" + "version": "==1.20.50" }, "cachetools": { "hashes": [ "sha256:1d9d5f567be80f7c07d765e21b814326d78c61eb0c3a637dffc0e5d1796cb2e2", "sha256:f469e29e7aa4cff64d8de4aad95ce76de8ea1125a16c68e0d93f65c3c3dc92e9" ], - "markers": "python_version ~= '3.5'", "version": "==4.2.1" }, "cbor2": { @@ -230,7 +219,6 @@ "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==4.0.0" }, "click": { @@ -238,7 +226,6 @@ "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==7.1.2" }, "click-didyoumean": { @@ -312,7 +299,6 @@ "sha256:76ffae916ba3aa66b46996c14fa713e46004788167a4873d647544e750e0e99f", "sha256:a9af943c79717bc52fe64a3c236ae5d3adccc8b5be19c881b442d2c3db233393" ], - "markers": "python_version >= '3.6'", "version": "==3.0.2" }, "defusedxml": { @@ -438,7 +424,6 @@ "hashes": [ "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.18.2" }, "geoip2": { @@ -454,7 +439,6 @@ "sha256:186fe2564634d67fbbb64f3daf8bc8c9cecbb2a7f535ed1a8a71795e50db8d87", "sha256:70b39558712826e41f65e5f05a8d879361deaf84df8883e5dd0ec3d0da6ab66e" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.28.1" }, "gunicorn": { @@ -469,7 +453,6 @@ "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6", "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042" ], - "markers": "python_version >= '3.6'", "version": "==0.12.0" }, "hiredis": { @@ -516,7 +499,6 @@ "sha256:f52010e0a44e3d8530437e7da38d11fb822acfb0d5b12e9cd5ba655509937ca0", "sha256:f8196f739092a78e4f6b1b2172679ed3343c39c61a3e9d722ce6fcf1dac2824a" ], - "markers": "python_version >= '3.6'", "version": "==2.0.0" }, "httptools": { @@ -562,7 +544,6 @@ "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2" ], - "markers": "python_version >= '3.5'", "version": "==0.5.1" }, "itypes": { @@ -577,7 +558,6 @@ "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419", "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.11.3" }, "jmespath": { @@ -585,7 +565,6 @@ "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.0" }, "jsonschema": { @@ -600,7 +579,6 @@ "sha256:6dc509178ac4269b0e66ab4881f70a2035c33d3a622e20585f965986a5182006", "sha256:f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c" ], - "markers": "python_version >= '3.6'", "version": "==5.0.2" }, "kubernetes": { @@ -613,9 +591,6 @@ }, "ldap3": { "hashes": [ - "sha256:afc6fc0d01f02af82cd7bfabd3bbfd5dc96a6ae91e97db0a2dab8a0f1b436056", - "sha256:8c949edbad2be8a03e719ba48bd6779f327ec156929562814b3e84ab56889c8c", - "sha256:4139c91f0eef9782df7b77c8cbc6243086affcb6a8a249b768a9658438e5da59", "sha256:18c3ee656a6775b9b0d60f7c6c5b094d878d1d90fc03d56731039f0a4b546a91", "sha256:c1df41d89459be6f304e0ceec4b00fdea533dbbcd83c802b1272dcdb94620b57" ], @@ -719,14 +694,12 @@ "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be", "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.1.1" }, "maxminddb": { "hashes": [ "sha256:47e86a084dd814fac88c99ea34ba3278a74bc9de5a25f4b815b608798747c7dc" ], - "markers": "python_version >= '3.6'", "version": "==2.0.3" }, "msgpack": { @@ -802,7 +775,6 @@ "sha256:f21756997ad8ef815d8ef3d34edd98804ab5ea337feedcd62fb52d22bf531281", "sha256:fc13a9524bc18b6fb6e0dbec3533ba0496bbed167c56d0aabefd965584557d80" ], - "markers": "python_version >= '3.6'", "version": "==5.1.0" }, "oauthlib": { @@ -810,7 +782,6 @@ "sha256:bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889", "sha256:df884cd6cbe20e32633f1db1072e9356f53638e4361bef4e8b03c9127c9328ea" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==3.1.0" }, "packaging": { @@ -826,7 +797,6 @@ "sha256:030e4f9df5f53db2292eec37c6255957eb76168c6f974e4176c711cf91ed34aa", "sha256:b6c5a9643e3545bcbfd9451766cbaa5d9c67e7303c7bc32c750b6fa70ecb107d" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.1" }, "prompt-toolkit": { @@ -834,7 +804,6 @@ "sha256:bf00f22079f5fadc949f42ae8ff7f05702826a97059ffcc6281036ad40ac6f04", "sha256:e1b4f11b9336a28fa11810bc623c357420f69dfdb6d2dac41ca2c21a55c033bc" ], - "markers": "python_full_version >= '3.6.1'", "version": "==3.0.18" }, "psycopg2-binary": { @@ -880,37 +849,15 @@ }, "pyasn1": { "hashes": [ - "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf", - "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00", - "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86", - "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", - "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2", - "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576", - "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12", - "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359", - "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776", - "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7", - "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3", - "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8", - "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d" + "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", + "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba" ], "version": "==0.4.8" }, "pyasn1-modules": { "hashes": [ - "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d", - "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4", - "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45", - "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405", - "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74", - "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8", - "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb", - "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811", - "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0", - "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed", "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e", - "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199", - "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd" + "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74" ], "version": "==0.2.8" }, @@ -919,7 +866,6 @@ "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.20" }, "pycryptodome": { @@ -991,7 +937,6 @@ "sha256:f933ecf4cb736c7af60a6a533db2bf569717f2318b265f92907acff1db43bc34", "sha256:fc9c55dc1ed57db76595f2d19a479fc1c3a1be2c9da8de798a93d286c5f65f38" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==3.10.1" }, "pyhamcrest": { @@ -999,7 +944,6 @@ "sha256:412e00137858f04bde0729913874a48485665f2d36fe9ee449f26be864af9316", "sha256:7ead136e03655af85069b6f47b23eb7c3e5c221aa9f022a4fbb499f5b7308f29" ], - "markers": "python_version >= '3.5'", "version": "==2.0.2" }, "pyjwkest": { @@ -1021,14 +965,12 @@ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.4.7" }, "pyrsistent": { "hashes": [ "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e" ], - "markers": "python_version >= '3.5'", "version": "==0.17.3" }, "python-dateutil": { @@ -1036,7 +978,6 @@ "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.1" }, "python-dotenv": { @@ -1093,7 +1034,6 @@ "sha256:0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2", "sha256:432b788c4530cfe16d8d943a09d40ca6c16149727e4afe8c2c9d5580c59d9f24" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==3.5.3" }, "requests": { @@ -1101,13 +1041,11 @@ "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.25.1" }, "requests-oauthlib": { "hashes": [ "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d", - "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc", "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a" ], "index": "pypi", @@ -1126,7 +1064,6 @@ "sha256:44bc6b54fddd45e4bc0619059196679f9e8b79c027f4131bb072e6a22f4d5e28", "sha256:ac79fb25f5476e8e9ed1c53b8a2286d2c3f5dde49eb37dbcee5c7eb6a8415a22" ], - "markers": "python_version >= '3'", "version": "==0.17.4" }, "ruamel.yaml.clib": { @@ -1163,7 +1100,7 @@ "sha256:e9f7d1d8c26a6a12c23421061f9022bb62704e38211fe375c645485f38df34a2", "sha256:f6061a31880c1ed6b6ce341215336e2f3d0c1deccd84957b6fa8ca474b41e89f" ], - "markers": "python_version < '3.10' and platform_python_implementation == 'CPython'", + "markers": "platform_python_implementation == 'CPython' and python_version < '3.10'", "version": "==0.2.2" }, "s3transfer": { @@ -1194,7 +1131,6 @@ "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.15.0" }, "sqlparse": { @@ -1202,7 +1138,6 @@ "sha256:017cde379adbd6a1f15a61873f43e8274179378e95ef3fede90b5aa64d304ed0", "sha256:0f91fd2e829c44362cbcfab3e9ae12e22badaa8a29ad5ff599f9ec109f0454e8" ], - "markers": "python_version >= '3.5'", "version": "==0.4.1" }, "structlog": { @@ -1258,7 +1193,6 @@ "sha256:7d6f89745680233f1c4db9ddb748df5e88d2a7a37962be174c0fd04c8dba1dc8", "sha256:c16b55f9a67b2419cfdf8846576e2ec9ba94fe6978a83080c352a80db31c93fb" ], - "markers": "python_version >= '3.6'", "version": "==21.2.1" }, "typing-extensions": { @@ -1274,7 +1208,6 @@ "sha256:07620c3f3f8eed1f12600845892b0e036a2420acf513c53f7de0abd911a5894f", "sha256:5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==3.0.1" }, "urllib3": { @@ -1319,7 +1252,6 @@ "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30", "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e" ], - "markers": "python_version >= '3.6'", "version": "==5.0.0" }, "watchgod": { @@ -1349,7 +1281,6 @@ "sha256:44b5df8f08c74c3d82d28100fdc81f4536809ce98a17f0757557813275fbb663", "sha256:63509b41d158ae5b7f67eb4ad20fecbb4eee99434e73e140354dc3ff8e09716f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.58.0" }, "websockets": { @@ -1438,7 +1369,6 @@ "sha256:f0b059678fd549c66b89bed03efcabb009075bd131c248ecdf087bdb6faba24a", "sha256:fcbb48a93e8699eae920f8d92f7160c03567b421bc17362a9ffbbd706a816f71" ], - "markers": "python_version >= '3.6'", "version": "==1.6.3" }, "zope.interface": { @@ -1495,7 +1425,6 @@ "sha256:fa939c2e2468142c9773443d4038e7c915b0cc1b670d3c9192bdc503f7ea73e9", "sha256:fcc5c1f95102989d2e116ffc8467963554ce89f30a65a3ea86a4d06849c498d8" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==5.3.0" } }, @@ -1512,7 +1441,6 @@ "sha256:ad63b8552c70939568966811a088ef0bc880f99a24a00834abd0e3681b514f91", "sha256:bea3f32799fbb8581f58431c12591bc20ce11cbc90ad82e2ea5717d94f2080d5" ], - "markers": "python_version >= '3.6'", "version": "==2.5.3" }, "attrs": { @@ -1520,7 +1448,6 @@ "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==20.3.0" }, "bandit": { @@ -1551,7 +1478,6 @@ "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==7.1.2" }, "colorama": { @@ -1625,7 +1551,6 @@ "sha256:6c4cc71933456991da20917998acbe6cf4fb41eeaab7d6d67fbc05ecd4c865b0", "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005" ], - "markers": "python_version >= '3.4'", "version": "==4.0.7" }, "gitpython": { @@ -1633,7 +1558,6 @@ "sha256:3283ae2fba31c913d857e12e5ba5f9a7772bbc064ae2bb09efafa71b0dd4939b", "sha256:be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61" ], - "markers": "python_version >= '3.4'", "version": "==3.1.14" }, "iniconfig": { @@ -1648,7 +1572,6 @@ "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6", "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d" ], - "markers": "python_version >= '3.6' and python_version < '4.0'", "version": "==5.8.0" }, "lazy-object-proxy": { @@ -1676,7 +1599,6 @@ "sha256:ed361bb83436f117f9917d282a456f9e5009ea12fd6de8742d1a4752c3017e93", "sha256:f5144c75445ae3ca2057faac03fda5a902eff196702b0a24daf1d6ce0650514b" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.6.0" }, "mccabe": { @@ -1713,7 +1635,6 @@ "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" ], - "markers": "python_version >= '2.6'", "version": "==5.5.1" }, "pluggy": { @@ -1721,7 +1642,6 @@ "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.13.1" }, "py": { @@ -1729,7 +1649,6 @@ "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.10.0" }, "pylint": { @@ -1760,7 +1679,6 @@ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.4.7" }, "pytest": { @@ -1873,7 +1791,6 @@ "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.15.0" }, "smmap": { @@ -1881,7 +1798,6 @@ "sha256:7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182", "sha256:a9a7479e4c572e2e775c404dcd3080c8dc49f39918c2cf74913d30c4c478e3c2" ], - "markers": "python_version >= '3.5'", "version": "==4.0.0" }, "stevedore": { @@ -1889,7 +1805,6 @@ "sha256:3a5bbd0652bf552748871eaa73a4a8dc2899786bc497a2aa1fcb4dcdb0debeee", "sha256:50d7b78fbaf0d04cd62411188fa7eedcb03eb7f4c4b37005615ceebe582aa82a" ], - "markers": "python_version >= '3.6'", "version": "==3.3.0" }, "toml": { @@ -1897,7 +1812,6 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, "typed-ast": { diff --git a/authentik/admin/api/version.py b/authentik/admin/api/version.py index 40fcbffdf..0397cc897 100644 --- a/authentik/admin/api/version.py +++ b/authentik/admin/api/version.py @@ -6,7 +6,7 @@ from drf_yasg.utils import swagger_auto_schema from packaging.version import parse from rest_framework.fields import SerializerMethodField from rest_framework.mixins import ListModelMixin -from rest_framework.permissions import IsAdminUser +from rest_framework.permissions import IsAuthenticated from rest_framework.request import Request from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet @@ -50,7 +50,9 @@ class VersionSerializer(PassiveSerializer): class VersionViewSet(ListModelMixin, GenericViewSet): """Get running and latest version.""" - permission_classes = [IsAdminUser] + permission_classes = [IsAuthenticated] + pagination_class = None + filter_backends = [] def get_queryset(self): # pragma: no cover return None diff --git a/authentik/api/auth.py b/authentik/api/auth.py index 52f59ab5b..6bcd511f7 100644 --- a/authentik/api/auth.py +++ b/authentik/api/auth.py @@ -10,29 +10,29 @@ from structlog.stdlib import get_logger from authentik.core.models import Token, TokenIntents, User LOGGER = get_logger() -X_AUTHENTIK_PREVENT_BASIC_HEADER = "HTTP_X_AUTHENTIK_PREVENT_BASIC" def token_from_header(raw_header: bytes) -> Optional[Token]: """raw_header in the Format of `Basic dGVzdDp0ZXN0`""" auth_credentials = raw_header.decode() # Accept headers with Type format and without - if " " in auth_credentials: - auth_type, auth_credentials = auth_credentials.split() - if auth_type.lower() != "basic": - LOGGER.debug( - "Unsupported authentication type, denying", type=auth_type.lower() - ) - return None - try: - auth_credentials = b64decode(auth_credentials.encode()).decode() - except (UnicodeDecodeError, Error): + if " " not in auth_credentials: return None - # Accept credentials with username and without - if ":" in auth_credentials: - _, password = auth_credentials.split(":") - else: - password = auth_credentials + auth_type, auth_credentials = auth_credentials.split() + if auth_type.lower() not in ["basic", "bearer"]: + LOGGER.debug("Unsupported authentication type, denying", type=auth_type.lower()) + return None + password = auth_credentials + if auth_type.lower() == "basic": + try: + auth_credentials = b64decode(auth_credentials.encode()).decode() + except (UnicodeDecodeError, Error): + return None + # Accept credentials with username and without + if ":" in auth_credentials: + _, password = auth_credentials.split(":") + else: + password = auth_credentials if password == "": # nosec return None tokens = Token.filter_not_expired(key=password, intent=TokenIntents.INTENT_API) @@ -43,10 +43,10 @@ def token_from_header(raw_header: bytes) -> Optional[Token]: class AuthentikTokenAuthentication(BaseAuthentication): - """Token-based authentication using HTTP Basic authentication""" + """Token-based authentication using HTTP Bearer authentication""" def authenticate(self, request: Request) -> Union[tuple[User, Any], None]: - """Token-based authentication using HTTP Basic authentication""" + """Token-based authentication using HTTP Bearer authentication""" auth = get_authorization_header(request) token = token_from_header(auth) @@ -56,6 +56,4 @@ class AuthentikTokenAuthentication(BaseAuthentication): return (token.user, None) def authenticate_header(self, request: Request) -> str: - if X_AUTHENTIK_PREVENT_BASIC_HEADER in request._request.META: - return "" - return 'Basic realm="authentik"' + return "Bearer" diff --git a/authentik/api/tests/test_auth.py b/authentik/api/tests/test_auth.py index 262186484..558bf603c 100644 --- a/authentik/api/tests/test_auth.py +++ b/authentik/api/tests/test_auth.py @@ -11,7 +11,7 @@ from authentik.core.models import Token, TokenIntents class TestAPIAuth(TestCase): """Test API Authentication""" - def test_valid(self): + def test_valid_basic(self): """Test valid token""" token = Token.objects.create( intent=TokenIntents.INTENT_API, user=get_anonymous_user() @@ -19,6 +19,13 @@ class TestAPIAuth(TestCase): auth = b64encode(f":{token.key}".encode()).decode() self.assertEqual(token_from_header(f"Basic {auth}".encode()), token) + def test_valid_bearer(self): + """Test valid token""" + token = Token.objects.create( + intent=TokenIntents.INTENT_API, user=get_anonymous_user() + ) + self.assertEqual(token_from_header(f"Bearer {token.key}".encode()), token) + def test_invalid_type(self): """Test invalid type""" self.assertIsNone(token_from_header("foo bar".encode())) diff --git a/authentik/root/settings.py b/authentik/root/settings.py index 49025ba40..ec052c734 100644 --- a/authentik/root/settings.py +++ b/authentik/root/settings.py @@ -143,7 +143,7 @@ SWAGGER_SETTINGS = { "authentik.api.pagination_schema.PaginationInspector", ], "SECURITY_DEFINITIONS": { - "token": {"type": "apiKey", "name": "Authorization", "in": "header"} + "Bearer": {"type": "apiKey", "name": "Authorization", "in": "header"} }, } diff --git a/authentik/stages/email/api.py b/authentik/stages/email/api.py index f93804b04..411aa7c09 100644 --- a/authentik/stages/email/api.py +++ b/authentik/stages/email/api.py @@ -52,7 +52,6 @@ class EmailStageViewSet(ModelViewSet): queryset = EmailStage.objects.all() serializer_class = EmailStageSerializer - # TODO: Validate connection settings when use_global_settings is unchecked @swagger_auto_schema(responses={200: TypeCreateSerializer(many=True)}) @action(detail=False, pagination_class=None, filter_backends=[]) def templates(self, request: Request) -> Response: diff --git a/outpost/pkg/ak/api_ws.go b/outpost/pkg/ak/api_ws.go index c2fe4dc31..28a74b17a 100644 --- a/outpost/pkg/ak/api_ws.go +++ b/outpost/pkg/ak/api_ws.go @@ -2,7 +2,6 @@ package ak import ( "crypto/tls" - "encoding/base64" "fmt" "net/http" "net/url" @@ -20,7 +19,7 @@ func (ac *APIController) initWS(pbURL url.URL, outpostUUID strfmt.UUID) { pathTemplate := "%s://%s/ws/outpost/%s/" scheme := strings.ReplaceAll(pbURL.Scheme, "http", "ws") - authHeader := base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("Basic :%s", ac.token))) + authHeader := fmt.Sprintf("Bearer %s", ac.token) header := http.Header{ "Authorization": []string{authHeader}, diff --git a/swagger.yaml b/swagger.yaml index 346297091..23424d8cd 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -13,12 +13,12 @@ consumes: produces: - application/json securityDefinitions: - token: + Bearer: type: apiKey name: Authorization in: header security: - - token: [] + - Bearer: [] paths: /admin/apps/: get: @@ -131,27 +131,7 @@ paths: get: operationId: admin_version_list description: Get running and latest version. - parameters: - - name: ordering - in: query - description: Which field to use when ordering the results. - required: false - type: string - - name: search - in: query - description: A search term. - required: false - type: string - - name: page - in: query - description: Page Index - required: false - type: integer - - name: page_size - in: query - description: Page Size - required: false - type: integer + parameters: [] responses: '200': description: '' diff --git a/web/package-lock.json b/web/package-lock.json index 7bcffe8f1..e1cb5c79b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -2084,12 +2084,12 @@ "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" }, "@typescript-eslint/eslint-plugin": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.21.0.tgz", - "integrity": "sha512-FPUyCPKZbVGexmbCFI3EQHzCZdy2/5f+jv6k2EDljGdXSRc0cKvbndd2nHZkSLqCNOPk0jB6lGzwIkglXcYVsQ==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz", + "integrity": "sha512-U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA==", "requires": { - "@typescript-eslint/experimental-utils": "4.21.0", - "@typescript-eslint/scope-manager": "4.21.0", + "@typescript-eslint/experimental-utils": "4.22.0", + "@typescript-eslint/scope-manager": "4.22.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -2099,50 +2099,102 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.21.0.tgz", - "integrity": "sha512-cEbgosW/tUFvKmkg3cU7LBoZhvUs+ZPVM9alb25XvR0dal4qHL3SiUqHNrzoWSxaXA9gsifrYrS1xdDV6w/gIA==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz", + "integrity": "sha512-xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg==", "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.21.0", - "@typescript-eslint/types": "4.21.0", - "@typescript-eslint/typescript-estree": "4.21.0", + "@typescript-eslint/scope-manager": "4.22.0", + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/typescript-estree": "4.22.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.21.0.tgz", - "integrity": "sha512-eyNf7QmE5O/l1smaQgN0Lj2M/1jOuNg2NrBm1dqqQN0sVngTLyw8tdCbih96ixlhbF1oINoN8fDCyEH9SjLeIA==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.0.tgz", + "integrity": "sha512-z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q==", "requires": { - "@typescript-eslint/scope-manager": "4.21.0", - "@typescript-eslint/types": "4.21.0", - "@typescript-eslint/typescript-estree": "4.21.0", + "@typescript-eslint/scope-manager": "4.22.0", + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/typescript-estree": "4.22.0", "debug": "^4.1.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz", + "integrity": "sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q==", + "requires": { + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0" + } + }, + "@typescript-eslint/types": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz", + "integrity": "sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA==" + }, + "@typescript-eslint/typescript-estree": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz", + "integrity": "sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg==", + "requires": { + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz", + "integrity": "sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw==", + "requires": { + "@typescript-eslint/types": "4.22.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + } } }, "@typescript-eslint/scope-manager": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.21.0.tgz", - "integrity": "sha512-kfOjF0w1Ix7+a5T1knOw00f7uAP9Gx44+OEsNQi0PvvTPLYeXJlsCJ4tYnDj5PQEYfpcgOH5yBlw7K+UEI9Agw==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz", + "integrity": "sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q==", "requires": { - "@typescript-eslint/types": "4.21.0", - "@typescript-eslint/visitor-keys": "4.21.0" + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0" } }, "@typescript-eslint/types": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.21.0.tgz", - "integrity": "sha512-+OQaupjGVVc8iXbt6M1oZMwyKQNehAfLYJJ3SdvnofK2qcjfor9pEM62rVjBknhowTkh+2HF+/KdRAc/wGBN2w==" + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz", + "integrity": "sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA==" }, "@typescript-eslint/typescript-estree": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.21.0.tgz", - "integrity": "sha512-ZD3M7yLaVGVYLw4nkkoGKumb7Rog7QID9YOWobFDMQKNl+vPxqVIW/uDk+MDeGc+OHcoG2nJ2HphwiPNajKw3w==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz", + "integrity": "sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg==", "requires": { - "@typescript-eslint/types": "4.21.0", - "@typescript-eslint/visitor-keys": "4.21.0", + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -2166,11 +2218,11 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.21.0.tgz", - "integrity": "sha512-dH22dROWGi5Z6p+Igc8bLVLmwy7vEe8r+8c+raPQU0LxgogPUrRAtRGtvBWmlr9waTu3n+QLt/qrS/hWzk1x5w==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz", + "integrity": "sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw==", "requires": { - "@typescript-eslint/types": "4.21.0", + "@typescript-eslint/types": "4.22.0", "eslint-visitor-keys": "^2.0.0" } }, diff --git a/web/package.json b/web/package.json index bebf8241c..2d3edbf56 100644 --- a/web/package.json +++ b/web/package.json @@ -55,8 +55,8 @@ "@types/chart.js": "^2.9.32", "@types/codemirror": "0.0.108", "@types/grecaptcha": "^3.0.1", - "@typescript-eslint/eslint-plugin": "^4.21.0", - "@typescript-eslint/parser": "^4.21.0", + "@typescript-eslint/eslint-plugin": "^4.22.0", + "@typescript-eslint/parser": "^4.22.0", "authentik-api": "file:api", "babel-plugin-macros": "^3.0.1", "base64-js": "^1.5.1", diff --git a/web/src/api/Config.ts b/web/src/api/Config.ts index ade459d8b..7a47ed0d4 100644 --- a/web/src/api/Config.ts +++ b/web/src/api/Config.ts @@ -1,8 +1,4 @@ -import * as Sentry from "@sentry/browser"; -import { Integrations } from "@sentry/tracing"; -import { VERSION } from "../constants"; -import { SentryIgnoredError } from "../common/errors"; -import { Config, Configuration, Middleware, ResponseContext, RootApi } from "authentik-api"; +import { Configuration, Middleware, ResponseContext } from "authentik-api"; import { getCookie } from "../utils"; import { API_DRAWER_MIDDLEWARE } from "../elements/notifications/APIDrawer"; import { MessageMiddleware } from "../elements/messages/Middleware"; @@ -13,13 +9,13 @@ export class LoggingMiddleware implements Middleware { console.debug(`authentik/api: ${context.response.status} ${context.init.method} ${context.url}`); return Promise.resolve(context.response); } + } export const DEFAULT_CONFIG = new Configuration({ basePath: "/api/v2beta", headers: { "X-CSRFToken": getCookie("authentik_csrf"), - "X-Authentik-Prevent-Basic": "true" }, middleware: [ API_DRAWER_MIDDLEWARE, @@ -27,27 +23,3 @@ export const DEFAULT_CONFIG = new Configuration({ new LoggingMiddleware(), ], }); - -export function configureSentry(): Promise { - return new RootApi(DEFAULT_CONFIG).rootConfigList().then((config) => { - if (config.errorReportingEnabled) { - Sentry.init({ - dsn: "https://a579bb09306d4f8b8d8847c052d3a1d3@sentry.beryju.org/8", - release: `authentik@${VERSION}`, - integrations: [ - new Integrations.BrowserTracing(), - ], - tracesSampleRate: 0.6, - environment: config.errorReportingEnvironment, - beforeSend(event: Sentry.Event, hint: Sentry.EventHint) { - if (hint.originalException instanceof SentryIgnoredError) { - return null; - } - return event; - }, - }); - console.debug("authentik/config: Sentry enabled."); - } - return config; - }); -} diff --git a/web/src/api/Sentry.ts b/web/src/api/Sentry.ts new file mode 100644 index 000000000..8b3f304d1 --- /dev/null +++ b/web/src/api/Sentry.ts @@ -0,0 +1,50 @@ +import * as Sentry from "@sentry/browser"; +import { Integrations } from "@sentry/tracing"; +import { VERSION } from "../constants"; +import { SentryIgnoredError } from "../common/errors"; +import { Config, RootApi } from "authentik-api"; +import { me } from "./Users"; +import { DEFAULT_CONFIG } from "./Config"; + +export function configureSentry(): Promise { + return new RootApi(DEFAULT_CONFIG).rootConfigList().then((config) => { + if (config.errorReportingEnabled) { + Sentry.init({ + dsn: "https://a579bb09306d4f8b8d8847c052d3a1d3@sentry.beryju.org/8", + release: `authentik@${VERSION}`, + integrations: [ + new Integrations.BrowserTracing({ + tracingOrigins: [window.location.host, "localhost"], + }), + ], + tracesSampleRate: 0.6, + environment: config.errorReportingEnvironment, + beforeSend(event: Sentry.Event, hint: Sentry.EventHint) { + if (hint.originalException instanceof SentryIgnoredError) { + return null; + } + if (event.exception) { + me().then(user => { + Sentry.showReportDialog({ + eventId: event.event_id, + user: { + email: user.user.email, + name: user.user.name, + } + }); + }); + } + return event; + }, + }); + console.debug("authentik/config: Sentry enabled."); + if (config.errorReportingSendPii) { + me().then(user => { + Sentry.setUser({ email: user.user.email }); + console.debug("authentik/config: Sentry with PII enabled."); + }); + } + } + return config; + }); +} diff --git a/web/src/elements/PageHeader.ts b/web/src/elements/PageHeader.ts index d207e23d8..87cc379b6 100644 --- a/web/src/elements/PageHeader.ts +++ b/web/src/elements/PageHeader.ts @@ -47,6 +47,9 @@ export class PageHeader extends LitElement { } .pf-c-page__main-section { width: 100%; + display: flex; + flex-direction: column; + justify-content: center; } img.pf-icon { max-height: 24px; diff --git a/web/src/elements/sidebar/SidebarBrand.ts b/web/src/elements/sidebar/SidebarBrand.ts index 3a74edd06..63f8a2d6e 100644 --- a/web/src/elements/sidebar/SidebarBrand.ts +++ b/web/src/elements/sidebar/SidebarBrand.ts @@ -1,7 +1,7 @@ import { css, CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFGlobal from "@patternfly/patternfly/patternfly-base.css"; -import { configureSentry } from "../../api/Config"; +import { configureSentry } from "../../api/Sentry"; import { Config } from "authentik-api"; import { ifDefined } from "lit-html/directives/if-defined"; diff --git a/web/src/interfaces/Interface.ts b/web/src/interfaces/Interface.ts index bfa47f3f7..9c436a0cb 100644 --- a/web/src/interfaces/Interface.ts +++ b/web/src/interfaces/Interface.ts @@ -2,7 +2,6 @@ import { css, CSSResult, html, LitElement, property, TemplateResult } from "lit- import { SidebarItem } from "../elements/sidebar/Sidebar"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; -import PFSkipToContent from "@patternfly/patternfly/components/SkipToContent/skip-to-content.css"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css"; @@ -13,7 +12,9 @@ import "../elements/Banner"; import { until } from "lit-html/directives/until"; import { me } from "../api/Users"; import { t } from "@lingui/macro"; -import { EVENT_NOTIFICATION_TOGGLE, EVENT_SIDEBAR_TOGGLE } from "../constants"; +import { EVENT_NOTIFICATION_TOGGLE, EVENT_SIDEBAR_TOGGLE, VERSION } from "../constants"; +import { AdminApi } from "authentik-api"; +import { DEFAULT_CONFIG } from "../api/Config"; export abstract class Interface extends LitElement { @property({type: Boolean}) @@ -25,7 +26,7 @@ export abstract class Interface extends LitElement { abstract get sidebar(): SidebarItem[]; static get styles(): CSSResult[] { - return [PFBase, PFPage, PFSkipToContent, PFButton, PFDrawer, css` + return [PFBase, PFPage, PFButton, PFDrawer, css` .pf-c-page__main, .pf-c-drawer__content, .pf-c-page__drawer { z-index: auto !important; } @@ -48,6 +49,17 @@ export abstract class Interface extends LitElement { render(): TemplateResult { return html` + ${until(new AdminApi(DEFAULT_CONFIG).adminVersionList().then(version => { + if (version.versionCurrent !== VERSION) { + return html` + ${t`A newer version of the frontend is available.`} + + `; + } + return html``; + }))} ${until(me().then((u) => { if (u.original) { return html` diff --git a/web/src/locales/en.po b/web/src/locales/en.po index 91adfb9b6..4d003c910 100644 --- a/web/src/locales/en.po +++ b/web/src/locales/en.po @@ -25,6 +25,10 @@ msgstr "6 digits, widely compatible" msgid "8 digits, not compatible with apps like Google Authenticator" msgstr "8 digits, not compatible with apps like Google Authenticator" +#: src/interfaces/Interface.ts:50 +msgid "A newer version of the frontend is available." +msgstr "A newer version of the frontend is available." + #: src/pages/policies/dummy/DummyPolicyForm.ts:53 msgid "A policy used for testing. Always returns the same result as specified below after waiting a random duration." msgstr "A policy used for testing. Always returns the same result as specified below after waiting a random duration." @@ -462,7 +466,7 @@ msgstr "Change password" msgid "Change your password" msgstr "Change your password" -#: src/pages/applications/ApplicationViewPage.ts:119 +#: src/pages/applications/ApplicationViewPage.ts:123 #: src/pages/flows/FlowViewPage.ts:110 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:136 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:135 @@ -1011,8 +1015,8 @@ msgid "Each provider has a different issuer, based on the application slug." msgstr "Each provider has a different issuer, based on the application slug." #: src/pages/applications/ApplicationListPage.ts:94 -#: src/pages/applications/ApplicationViewPage.ts:95 -#: src/pages/applications/ApplicationViewPage.ts:109 +#: src/pages/applications/ApplicationViewPage.ts:91 +#: src/pages/applications/ApplicationViewPage.ts:105 #: src/pages/crypto/CertificateKeyPairListPage.ts:74 #: src/pages/events/RuleListPage.ts:70 #: src/pages/events/TransportListPage.ts:74 @@ -1390,7 +1394,7 @@ msgstr "Form didn't return a promise for submitting" msgid "Friendly Name" msgstr "Friendly Name" -#: src/pages/stages/email/EmailStageForm.ts:109 +#: src/pages/stages/email/EmailStageForm.ts:107 msgid "From address" msgstr "From address" @@ -1676,7 +1680,7 @@ msgstr "Library" #: src/flows/stages/identification/IdentificationStage.ts:134 #: src/flows/stages/password/PasswordStage.ts:31 #: src/flows/stages/prompt/PromptStage.ts:126 -#: src/pages/applications/ApplicationViewPage.ts:60 +#: src/pages/applications/ApplicationViewPage.ts:54 #: src/pages/user-settings/UserDetailsPage.ts:38 #: src/utils.ts:40 msgid "Loading" @@ -1724,7 +1728,7 @@ msgstr "Loading" #: src/pages/stages/authenticator_static/AuthenticatorStaticStageForm.ts:90 #: src/pages/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts:96 #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:131 -#: src/pages/stages/email/EmailStageForm.ts:172 +#: src/pages/stages/email/EmailStageForm.ts:170 #: src/pages/stages/identification/IdentificationStageForm.ts:120 #: src/pages/stages/identification/IdentificationStageForm.ts:138 #: src/pages/stages/password/PasswordStageForm.ts:106 @@ -1756,7 +1760,7 @@ msgid "Logins" msgstr "Logins" #: src/pages/admin-overview/AdminOverviewPage.ts:40 -#: src/pages/applications/ApplicationViewPage.ts:68 +#: src/pages/applications/ApplicationViewPage.ts:115 msgid "Logins over the last 24 hours" msgstr "Logins over the last 24 hours" @@ -1896,7 +1900,7 @@ msgstr "Monitor" #: src/pages/stages/consent/ConsentStageForm.ts:57 #: src/pages/stages/deny/DenyStageForm.ts:54 #: src/pages/stages/dummy/DummyStageForm.ts:54 -#: src/pages/stages/email/EmailStageForm.ts:124 +#: src/pages/stages/email/EmailStageForm.ts:122 #: src/pages/stages/identification/IdentificationStageForm.ts:63 #: src/pages/stages/invitation/InvitationStageForm.ts:56 #: src/pages/stages/password/PasswordStageForm.ts:63 @@ -2185,7 +2189,7 @@ msgid "Outposts are deployments of authentik components to support different env msgstr "Outposts are deployments of authentik components to support different environments and protocols, like reverse proxies." #: src/interfaces/AdminInterface.ts:17 -#: src/pages/applications/ApplicationViewPage.ts:65 +#: src/pages/applications/ApplicationViewPage.ts:59 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:65 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:56 #: src/pages/providers/saml/SAMLProviderViewPage.ts:58 @@ -2265,7 +2269,7 @@ msgstr "Policy" msgid "Policy / User / Group" msgstr "Policy / User / Group" -#: src/pages/applications/ApplicationViewPage.ts:130 +#: src/pages/applications/ApplicationViewPage.ts:134 #: src/pages/flows/FlowViewPage.ts:101 #: src/pages/sources/oauth/OAuthSourceViewPage.ts:143 #: src/pages/sources/saml/SAMLSourceViewPage.ts:150 @@ -2277,6 +2281,7 @@ msgid "Policy binding" msgstr "Policy binding" #: src/pages/applications/ApplicationForm.ts:141 +#: src/pages/applications/ApplicationViewPage.ts:81 #: src/pages/flows/FlowForm.ts:101 #: src/pages/flows/StageBindingForm.ts:136 msgid "Policy engine mode" @@ -2384,7 +2389,7 @@ msgstr "Provide support for protocols like SAML and OAuth to assigned applicatio #: src/elements/oauth/UserRefreshList.ts:29 #: src/pages/applications/ApplicationForm.ts:100 #: src/pages/applications/ApplicationListPage.ts:59 -#: src/pages/applications/ApplicationViewPage.ts:82 +#: src/pages/applications/ApplicationViewPage.ts:68 #: src/pages/providers/ProviderListPage.ts:34 msgid "Provider" msgstr "Provider" @@ -2498,11 +2503,15 @@ msgstr "Register device" msgid "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression." msgstr "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression." -#: src/pages/applications/ApplicationViewPage.ts:76 +#: src/pages/applications/ApplicationViewPage.ts:62 #: src/pages/flows/FlowViewPage.ts:64 msgid "Related" msgstr "Related" +#: src/interfaces/Interface.ts:52 +msgid "Reload" +msgstr "Reload" + #: src/pages/stages/user_logout/UserLogoutStageForm.ts:51 msgid "Remove the user from the current session." msgstr "Remove the user from the current session." @@ -2598,7 +2607,7 @@ msgstr "SLO URL" msgid "SMTP Host" msgstr "SMTP Host" -#: src/pages/stages/email/EmailStageForm.ts:80 +#: src/pages/stages/email/EmailStageForm.ts:79 msgid "SMTP Password" msgstr "SMTP Password" @@ -2863,7 +2872,7 @@ msgstr "Stage used to validate any authenticator. This stage should be used duri #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:71 #: src/pages/stages/captcha/CaptchaStageForm.ts:62 #: src/pages/stages/consent/ConsentStageForm.ts:64 -#: src/pages/stages/email/EmailStageForm.ts:131 +#: src/pages/stages/email/EmailStageForm.ts:129 #: src/pages/stages/identification/IdentificationStageForm.ts:70 #: src/pages/stages/invitation/InvitationStageForm.ts:63 #: src/pages/stages/password/PasswordStageForm.ts:70 @@ -2914,11 +2923,11 @@ msgstr "Status: Disabled" msgid "Status: Enabled" msgstr "Status: Enabled" -#: src/interfaces/Interface.ts:51 +#: src/interfaces/Interface.ts:63 msgid "Stop impersonation" msgstr "Stop impersonation" -#: src/pages/stages/email/EmailStageForm.ts:154 +#: src/pages/stages/email/EmailStageForm.ts:152 msgid "Subject" msgstr "Subject" @@ -3253,7 +3262,7 @@ msgstr "Task finished with errors" msgid "Task finished with warnings" msgstr "Task finished with warnings" -#: src/pages/stages/email/EmailStageForm.ts:160 +#: src/pages/stages/email/EmailStageForm.ts:158 msgid "Template" msgstr "Template" @@ -3297,7 +3306,7 @@ msgstr "" msgid "These policies control when this stage will be applied to the flow." msgstr "These policies control when this stage will be applied to the flow." -#: src/pages/applications/ApplicationViewPage.ts:132 +#: src/pages/applications/ApplicationViewPage.ts:136 msgid "These policies control which users can access this application." msgstr "These policies control which users can access this application." @@ -3322,7 +3331,7 @@ msgstr "This stage checks the user's current session against the Google reCaptch msgid "Threshold" msgstr "Threshold" -#: src/pages/stages/email/EmailStageForm.ts:151 +#: src/pages/stages/email/EmailStageForm.ts:149 msgid "Time in minutes the token sent is valid." msgstr "Time in minutes the token sent is valid." @@ -3336,7 +3345,7 @@ msgstr "Time-based One-Time Passwords" #: src/pages/policies/BoundPoliciesList.ts:39 #: src/pages/policies/PolicyBindingForm.ts:209 -#: src/pages/stages/email/EmailStageForm.ts:103 +#: src/pages/stages/email/EmailStageForm.ts:101 msgid "Timeout" msgstr "Timeout" @@ -3358,7 +3367,7 @@ msgstr "Token URL" msgid "Token count" msgstr "Token count" -#: src/pages/stages/email/EmailStageForm.ts:147 +#: src/pages/stages/email/EmailStageForm.ts:145 msgid "Token expiry" msgstr "Token expiry" @@ -3450,7 +3459,7 @@ msgid "Up-to-date!" msgstr "Up-to-date!" #: src/pages/applications/ApplicationListPage.ts:86 -#: src/pages/applications/ApplicationViewPage.ts:101 +#: src/pages/applications/ApplicationViewPage.ts:97 #: src/pages/crypto/CertificateKeyPairListPage.ts:66 #: src/pages/events/RuleListPage.ts:62 #: src/pages/events/TransportListPage.ts:66 @@ -3488,7 +3497,7 @@ msgid "Update" msgstr "Update" #: src/pages/applications/ApplicationListPage.ts:89 -#: src/pages/applications/ApplicationViewPage.ts:104 +#: src/pages/applications/ApplicationViewPage.ts:100 msgid "Update Application" msgstr "Update Application" @@ -3579,11 +3588,11 @@ msgstr "Update details" msgid "Update {0}" msgstr "Update {0}" -#: src/pages/stages/email/EmailStageForm.ts:98 +#: src/pages/stages/email/EmailStageForm.ts:96 msgid "Use SSL" msgstr "Use SSL" -#: src/pages/stages/email/EmailStageForm.ts:90 +#: src/pages/stages/email/EmailStageForm.ts:88 msgid "Use TLS" msgstr "Use TLS" @@ -3595,7 +3604,7 @@ msgstr "Use a code-based authenticator." msgid "Use a security key to prove your identity." msgstr "Use a security key to prove your identity." -#: src/pages/stages/email/EmailStageForm.ts:141 +#: src/pages/stages/email/EmailStageForm.ts:139 msgid "Use global settings" msgstr "Use global settings" @@ -3722,7 +3731,7 @@ msgstr "Validity days" msgid "Verification Certificate" msgstr "Verification Certificate" -#: src/pages/stages/email/EmailStageForm.ts:121 +#: src/pages/stages/email/EmailStageForm.ts:119 msgid "Verify the user's email address by sending them a one-time-link. Can also be used for recovery to verify the user's authenticity." msgstr "Verify the user's email address by sending them a one-time-link. Can also be used for recovery to verify the user's authenticity." @@ -3795,7 +3804,7 @@ msgstr "Webhook URL" msgid "When a valid username/email has been entered, and this option is enabled, the user's username and avatar will be shown. Otherwise, the text that the user entered will be shown." msgstr "When a valid username/email has been entered, and this option is enabled, the user's username and avatar will be shown. Otherwise, the text that the user entered will be shown." -#: src/pages/stages/email/EmailStageForm.ts:144 +#: src/pages/stages/email/EmailStageForm.ts:142 msgid "When enabled, global Email connection settings will be used and connection settings below will be ignored." msgstr "When enabled, global Email connection settings will be used and connection settings below will be ignored." @@ -3854,7 +3863,7 @@ msgstr "X509 Subject" msgid "Yes" msgstr "Yes" -#: src/interfaces/Interface.ts:49 +#: src/interfaces/Interface.ts:61 msgid "You're currently impersonating {0}." msgstr "You're currently impersonating {0}." diff --git a/web/src/locales/pseudo-LOCALE.po b/web/src/locales/pseudo-LOCALE.po index 4550a0b12..ac28649e2 100644 --- a/web/src/locales/pseudo-LOCALE.po +++ b/web/src/locales/pseudo-LOCALE.po @@ -25,6 +25,10 @@ msgstr "" msgid "8 digits, not compatible with apps like Google Authenticator" msgstr "" +#: src/interfaces/Interface.ts:50 +msgid "A newer version of the frontend is available." +msgstr "" + #: src/pages/policies/dummy/DummyPolicyForm.ts:53 msgid "A policy used for testing. Always returns the same result as specified below after waiting a random duration." msgstr "" @@ -458,7 +462,7 @@ msgstr "" msgid "Change your password" msgstr "" -#: src/pages/applications/ApplicationViewPage.ts:119 +#: src/pages/applications/ApplicationViewPage.ts:123 #: src/pages/flows/FlowViewPage.ts:110 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:136 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:135 @@ -1003,8 +1007,8 @@ msgid "Each provider has a different issuer, based on the application slug." msgstr "" #: src/pages/applications/ApplicationListPage.ts:94 -#: src/pages/applications/ApplicationViewPage.ts:95 -#: src/pages/applications/ApplicationViewPage.ts:109 +#: src/pages/applications/ApplicationViewPage.ts:91 +#: src/pages/applications/ApplicationViewPage.ts:105 #: src/pages/crypto/CertificateKeyPairListPage.ts:74 #: src/pages/events/RuleListPage.ts:70 #: src/pages/events/TransportListPage.ts:74 @@ -1382,7 +1386,7 @@ msgstr "" msgid "Friendly Name" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:109 +#: src/pages/stages/email/EmailStageForm.ts:107 msgid "From address" msgstr "" @@ -1668,7 +1672,7 @@ msgstr "" #: src/flows/stages/identification/IdentificationStage.ts:134 #: src/flows/stages/password/PasswordStage.ts:31 #: src/flows/stages/prompt/PromptStage.ts:126 -#: src/pages/applications/ApplicationViewPage.ts:60 +#: src/pages/applications/ApplicationViewPage.ts:54 #: src/pages/user-settings/UserDetailsPage.ts:38 #: src/utils.ts:40 msgid "Loading" @@ -1716,7 +1720,7 @@ msgstr "" #: src/pages/stages/authenticator_static/AuthenticatorStaticStageForm.ts:90 #: src/pages/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts:96 #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:131 -#: src/pages/stages/email/EmailStageForm.ts:172 +#: src/pages/stages/email/EmailStageForm.ts:170 #: src/pages/stages/identification/IdentificationStageForm.ts:120 #: src/pages/stages/identification/IdentificationStageForm.ts:138 #: src/pages/stages/password/PasswordStageForm.ts:106 @@ -1748,7 +1752,7 @@ msgid "Logins" msgstr "" #: src/pages/admin-overview/AdminOverviewPage.ts:40 -#: src/pages/applications/ApplicationViewPage.ts:68 +#: src/pages/applications/ApplicationViewPage.ts:115 msgid "Logins over the last 24 hours" msgstr "" @@ -1888,7 +1892,7 @@ msgstr "" #: src/pages/stages/consent/ConsentStageForm.ts:57 #: src/pages/stages/deny/DenyStageForm.ts:54 #: src/pages/stages/dummy/DummyStageForm.ts:54 -#: src/pages/stages/email/EmailStageForm.ts:124 +#: src/pages/stages/email/EmailStageForm.ts:122 #: src/pages/stages/identification/IdentificationStageForm.ts:63 #: src/pages/stages/invitation/InvitationStageForm.ts:56 #: src/pages/stages/password/PasswordStageForm.ts:63 @@ -2177,7 +2181,7 @@ msgid "Outposts are deployments of authentik components to support different env msgstr "" #: src/interfaces/AdminInterface.ts:17 -#: src/pages/applications/ApplicationViewPage.ts:65 +#: src/pages/applications/ApplicationViewPage.ts:59 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:65 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:56 #: src/pages/providers/saml/SAMLProviderViewPage.ts:58 @@ -2257,7 +2261,7 @@ msgstr "" msgid "Policy / User / Group" msgstr "" -#: src/pages/applications/ApplicationViewPage.ts:130 +#: src/pages/applications/ApplicationViewPage.ts:134 #: src/pages/flows/FlowViewPage.ts:101 #: src/pages/sources/oauth/OAuthSourceViewPage.ts:143 #: src/pages/sources/saml/SAMLSourceViewPage.ts:150 @@ -2269,6 +2273,7 @@ msgid "Policy binding" msgstr "" #: src/pages/applications/ApplicationForm.ts:141 +#: src/pages/applications/ApplicationViewPage.ts:81 #: src/pages/flows/FlowForm.ts:101 #: src/pages/flows/StageBindingForm.ts:136 msgid "Policy engine mode" @@ -2376,7 +2381,7 @@ msgstr "" #: src/elements/oauth/UserRefreshList.ts:29 #: src/pages/applications/ApplicationForm.ts:100 #: src/pages/applications/ApplicationListPage.ts:59 -#: src/pages/applications/ApplicationViewPage.ts:82 +#: src/pages/applications/ApplicationViewPage.ts:68 #: src/pages/providers/ProviderListPage.ts:34 msgid "Provider" msgstr "" @@ -2490,11 +2495,15 @@ msgstr "" msgid "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression." msgstr "" -#: src/pages/applications/ApplicationViewPage.ts:76 +#: src/pages/applications/ApplicationViewPage.ts:62 #: src/pages/flows/FlowViewPage.ts:64 msgid "Related" msgstr "" +#: src/interfaces/Interface.ts:52 +msgid "Reload" +msgstr "" + #: src/pages/stages/user_logout/UserLogoutStageForm.ts:51 msgid "Remove the user from the current session." msgstr "" @@ -2590,7 +2599,7 @@ msgstr "" msgid "SMTP Host" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:80 +#: src/pages/stages/email/EmailStageForm.ts:79 msgid "SMTP Password" msgstr "" @@ -2855,7 +2864,7 @@ msgstr "" #: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:71 #: src/pages/stages/captcha/CaptchaStageForm.ts:62 #: src/pages/stages/consent/ConsentStageForm.ts:64 -#: src/pages/stages/email/EmailStageForm.ts:131 +#: src/pages/stages/email/EmailStageForm.ts:129 #: src/pages/stages/identification/IdentificationStageForm.ts:70 #: src/pages/stages/invitation/InvitationStageForm.ts:63 #: src/pages/stages/password/PasswordStageForm.ts:70 @@ -2906,11 +2915,11 @@ msgstr "" msgid "Status: Enabled" msgstr "" -#: src/interfaces/Interface.ts:51 +#: src/interfaces/Interface.ts:63 msgid "Stop impersonation" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:154 +#: src/pages/stages/email/EmailStageForm.ts:152 msgid "Subject" msgstr "" @@ -3245,7 +3254,7 @@ msgstr "" msgid "Task finished with warnings" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:160 +#: src/pages/stages/email/EmailStageForm.ts:158 msgid "Template" msgstr "" @@ -3287,7 +3296,7 @@ msgstr "" msgid "These policies control when this stage will be applied to the flow." msgstr "" -#: src/pages/applications/ApplicationViewPage.ts:132 +#: src/pages/applications/ApplicationViewPage.ts:136 msgid "These policies control which users can access this application." msgstr "" @@ -3312,7 +3321,7 @@ msgstr "" msgid "Threshold" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:151 +#: src/pages/stages/email/EmailStageForm.ts:149 msgid "Time in minutes the token sent is valid." msgstr "" @@ -3326,7 +3335,7 @@ msgstr "" #: src/pages/policies/BoundPoliciesList.ts:39 #: src/pages/policies/PolicyBindingForm.ts:209 -#: src/pages/stages/email/EmailStageForm.ts:103 +#: src/pages/stages/email/EmailStageForm.ts:101 msgid "Timeout" msgstr "" @@ -3348,7 +3357,7 @@ msgstr "" msgid "Token count" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:147 +#: src/pages/stages/email/EmailStageForm.ts:145 msgid "Token expiry" msgstr "" @@ -3440,7 +3449,7 @@ msgid "Up-to-date!" msgstr "" #: src/pages/applications/ApplicationListPage.ts:86 -#: src/pages/applications/ApplicationViewPage.ts:101 +#: src/pages/applications/ApplicationViewPage.ts:97 #: src/pages/crypto/CertificateKeyPairListPage.ts:66 #: src/pages/events/RuleListPage.ts:62 #: src/pages/events/TransportListPage.ts:66 @@ -3478,7 +3487,7 @@ msgid "Update" msgstr "" #: src/pages/applications/ApplicationListPage.ts:89 -#: src/pages/applications/ApplicationViewPage.ts:104 +#: src/pages/applications/ApplicationViewPage.ts:100 msgid "Update Application" msgstr "" @@ -3569,11 +3578,11 @@ msgstr "" msgid "Update {0}" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:98 +#: src/pages/stages/email/EmailStageForm.ts:96 msgid "Use SSL" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:90 +#: src/pages/stages/email/EmailStageForm.ts:88 msgid "Use TLS" msgstr "" @@ -3585,7 +3594,7 @@ msgstr "" msgid "Use a security key to prove your identity." msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:141 +#: src/pages/stages/email/EmailStageForm.ts:139 msgid "Use global settings" msgstr "" @@ -3712,7 +3721,7 @@ msgstr "" msgid "Verification Certificate" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:121 +#: src/pages/stages/email/EmailStageForm.ts:119 msgid "Verify the user's email address by sending them a one-time-link. Can also be used for recovery to verify the user's authenticity." msgstr "" @@ -3785,7 +3794,7 @@ msgstr "" msgid "When a valid username/email has been entered, and this option is enabled, the user's username and avatar will be shown. Otherwise, the text that the user entered will be shown." msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:144 +#: src/pages/stages/email/EmailStageForm.ts:142 msgid "When enabled, global Email connection settings will be used and connection settings below will be ignored." msgstr "" @@ -3842,7 +3851,7 @@ msgstr "" msgid "Yes" msgstr "" -#: src/interfaces/Interface.ts:49 +#: src/interfaces/Interface.ts:61 msgid "You're currently impersonating {0}." msgstr "" diff --git a/web/src/pages/admin-overview/cards/VersionStatusCard.ts b/web/src/pages/admin-overview/cards/VersionStatusCard.ts index 4d8934789..499efe3ba 100644 --- a/web/src/pages/admin-overview/cards/VersionStatusCard.ts +++ b/web/src/pages/admin-overview/cards/VersionStatusCard.ts @@ -8,7 +8,7 @@ import { AdminStatusCard, AdminStatus } from "./AdminStatusCard"; export class VersionStatusCard extends AdminStatusCard { getPrimaryValue(): Promise { - return new AdminApi(DEFAULT_CONFIG).adminVersionList({}); + return new AdminApi(DEFAULT_CONFIG).adminVersionList(); } getStatus(value: Version): Promise { diff --git a/web/src/pages/stages/email/EmailStageForm.ts b/web/src/pages/stages/email/EmailStageForm.ts index f7917358d..176e533c3 100644 --- a/web/src/pages/stages/email/EmailStageForm.ts +++ b/web/src/pages/stages/email/EmailStageForm.ts @@ -71,16 +71,14 @@ export class EmailStageForm extends Form { - + - +
@@ -92,7 +90,7 @@ export class EmailStageForm extends Form {
- + diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index a774278a3..a0bb5d41a 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -70,12 +70,6 @@ module.exports = { algolia: { apiKey: '1b60b8f630b127697cbe0d3b31841470', indexName: 'goauthentik', - - // Optional: see doc section below - contextualSearch: true, - - // Optional: Algolia search parameters - searchParameters: {}, }, }, presets: [