From 2fd0e463785ee6e2b85633b97e2251237d07a83a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Apr 2021 09:41:51 +0200 Subject: [PATCH 1/8] build(deps): bump @typescript-eslint/parser in /web (#733) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.21.0 to 4.22.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.22.0/packages/parser) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 64 +++++++++++++++++++++++++++++++++++++++---- web/package.json | 2 +- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 7bcffe8f1..25699c4c9 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -2112,14 +2112,66 @@ } }, "@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": { diff --git a/web/package.json b/web/package.json index bebf8241c..dc83417fb 100644 --- a/web/package.json +++ b/web/package.json @@ -56,7 +56,7 @@ "@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/parser": "^4.22.0", "authentik-api": "file:api", "babel-plugin-macros": "^3.0.1", "base64-js": "^1.5.1", From f9976492e783e5197104b700b7ad96bbd2ea2277 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Apr 2021 09:42:16 +0200 Subject: [PATCH 2/8] build(deps): bump boto3 from 1.17.49 to 1.17.50 (#731) Bumps [boto3](https://github.com/boto/boto3) from 1.17.49 to 1.17.50. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/boto3/compare/1.17.49...1.17.50) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Pipfile.lock | 104 +++++---------------------------------------------- 1 file changed, 9 insertions(+), 95 deletions(-) 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": { From 1b79fad6cfb758dd15791e629221ba18ba76ae01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Apr 2021 10:28:22 +0200 Subject: [PATCH 3/8] build(deps): bump @typescript-eslint/eslint-plugin in /web (#732) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.21.0 to 4.22.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.22.0/packages/eslint-plugin) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 56 +++++++++++++++++++++---------------------- web/package.json | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 25699c4c9..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,14 +2099,14 @@ } }, "@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" } @@ -2175,26 +2175,26 @@ } }, "@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", @@ -2218,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 dc83417fb..2d3edbf56 100644 --- a/web/package.json +++ b/web/package.json @@ -55,7 +55,7 @@ "@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/eslint-plugin": "^4.22.0", "@typescript-eslint/parser": "^4.22.0", "authentik-api": "file:api", "babel-plugin-macros": "^3.0.1", From 55bb9b6643cf4825289a120d871c66e43fe301ae Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 13 Apr 2021 16:38:50 +0200 Subject: [PATCH 4/8] web/admin: show banner when backend and frontend versions mismatch Signed-off-by: Jens Langhammer --- authentik/admin/api/version.py | 6 ++- authentik/stages/email/api.py | 1 - swagger.yaml | 22 +---------- web/src/interfaces/Interface.ts | 18 +++++++-- web/src/locales/en.po | 37 ++++++++++++------- web/src/locales/pseudo-LOCALE.po | 37 ++++++++++++------- .../admin-overview/cards/VersionStatusCard.ts | 2 +- web/src/pages/stages/email/EmailStageForm.ts | 8 ++-- 8 files changed, 70 insertions(+), 61 deletions(-) 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/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/swagger.yaml b/swagger.yaml index 346297091..3563754e4 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -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/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..9bcb5a469 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 @@ -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" @@ -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" @@ -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." @@ -2914,7 +2923,7 @@ 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" @@ -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." @@ -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" @@ -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..9271de2a6 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 @@ -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" @@ -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 "" @@ -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 "" @@ -2906,7 +2915,7 @@ msgstr "" msgid "Status: Enabled" msgstr "" -#: src/interfaces/Interface.ts:51 +#: src/interfaces/Interface.ts:63 msgid "Stop impersonation" 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 "" @@ -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 "" @@ -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 {
- + From 8b66fa55a6208ced79764277f16cad846a61eb48 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 13 Apr 2021 17:46:03 +0200 Subject: [PATCH 5/8] web/elements: center header if no description is shown Signed-off-by: Jens Langhammer --- web/src/elements/PageHeader.ts | 3 +++ 1 file changed, 3 insertions(+) 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; From 30cb468ec550f55f8427979ae1b174754571bd29 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 13 Apr 2021 18:05:19 +0200 Subject: [PATCH 6/8] website: fix search on docs site Signed-off-by: Jens Langhammer --- website/docusaurus.config.js | 6 ------ 1 file changed, 6 deletions(-) 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: [ From 513d3c1c31f91ee71ea4711bc378bf563f88474d Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 13 Apr 2021 18:35:26 +0200 Subject: [PATCH 7/8] web: add support for PII for sentry, add user feedback dialog Signed-off-by: Jens Langhammer --- web/src/api/Config.ts | 31 +-------------- web/src/api/Sentry.ts | 50 ++++++++++++++++++++++++ web/src/elements/sidebar/SidebarBrand.ts | 2 +- web/src/locales/en.po | 30 +++++++------- web/src/locales/pseudo-LOCALE.po | 30 +++++++------- 5 files changed, 83 insertions(+), 60 deletions(-) create mode 100644 web/src/api/Sentry.ts diff --git a/web/src/api/Config.ts b/web/src/api/Config.ts index ade459d8b..261279226 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,6 +9,7 @@ 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({ @@ -27,27 +24,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/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/locales/en.po b/web/src/locales/en.po index 9bcb5a469..4d003c910 100644 --- a/web/src/locales/en.po +++ b/web/src/locales/en.po @@ -1394,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" @@ -1728,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 @@ -1900,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 @@ -2607,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" @@ -2872,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 @@ -2927,7 +2927,7 @@ msgstr "Status: Enabled" msgid "Stop impersonation" msgstr "Stop impersonation" -#: src/pages/stages/email/EmailStageForm.ts:154 +#: src/pages/stages/email/EmailStageForm.ts:152 msgid "Subject" msgstr "Subject" @@ -3262,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" @@ -3331,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." @@ -3345,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" @@ -3367,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" @@ -3588,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" @@ -3604,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" @@ -3731,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." @@ -3804,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." diff --git a/web/src/locales/pseudo-LOCALE.po b/web/src/locales/pseudo-LOCALE.po index 9271de2a6..ac28649e2 100644 --- a/web/src/locales/pseudo-LOCALE.po +++ b/web/src/locales/pseudo-LOCALE.po @@ -1386,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 "" @@ -1720,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 @@ -1892,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 @@ -2599,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 "" @@ -2864,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 @@ -2919,7 +2919,7 @@ msgstr "" msgid "Stop impersonation" msgstr "" -#: src/pages/stages/email/EmailStageForm.ts:154 +#: src/pages/stages/email/EmailStageForm.ts:152 msgid "Subject" msgstr "" @@ -3254,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 "" @@ -3321,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 "" @@ -3335,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 "" @@ -3357,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 "" @@ -3578,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 "" @@ -3594,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 "" @@ -3721,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 "" @@ -3794,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 "" From 6821679fbc7e24cdeecf93fed8bf2b7e1a324234 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 13 Apr 2021 19:57:33 +0200 Subject: [PATCH 8/8] *: add support for bearer authentication on API Signed-off-by: Jens Langhammer --- authentik/api/auth.py | 40 +++++++++++++++----------------- authentik/api/tests/test_auth.py | 9 ++++++- authentik/root/settings.py | 2 +- outpost/pkg/ak/api_ws.go | 3 +-- swagger.yaml | 4 ++-- web/src/api/Config.ts | 1 - 6 files changed, 31 insertions(+), 28 deletions(-) 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/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 3563754e4..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: diff --git a/web/src/api/Config.ts b/web/src/api/Config.ts index 261279226..7a47ed0d4 100644 --- a/web/src/api/Config.ts +++ b/web/src/api/Config.ts @@ -16,7 +16,6 @@ export const DEFAULT_CONFIG = new Configuration({ basePath: "/api/v2beta", headers: { "X-CSRFToken": getCookie("authentik_csrf"), - "X-Authentik-Prevent-Basic": "true" }, middleware: [ API_DRAWER_MIDDLEWARE,