Merge branch 'fixes' into 'main'

Remove unused indirect dependency

See merge request framasoft/mobilizon!1226
This commit is contained in:
Thomas Citharel 2022-05-03 14:23:32 +00:00
commit 90158f1112
23 changed files with 232 additions and 150 deletions

View File

@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 2.1.0-rc.4 - 2022-05-03
Changes since rc.3:
* Use upstream dependencies for Ueberauth providers
* Fix Ueberauth use of CSRF with session
* Fix being an administrator when using 3rd-party auth provider
* Include ongoing events in search
* Send push notification into own task
* Add Überauth CAS Strategy
## 2.1.0-rc.3 - 2022-04-24 ## 2.1.0-rc.3 - 2022-04-24
Changes since rc.2: Changes since rc.2:

View File

@ -1,6 +1,6 @@
{ {
"name": "mobilizon", "name": "mobilizon",
"version": "2.1.0-rc.3", "version": "2.1.0-rc.4",
"private": true, "private": true,
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",

View File

@ -54,9 +54,9 @@
leven "^3.1.0" leven "^3.1.0"
"@apollo/client@^3.0.0", "@apollo/client@^3.3.16": "@apollo/client@^3.0.0", "@apollo/client@^3.3.16":
version "3.6.1" version "3.6.2"
resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.6.1.tgz#2578aa3c06e4b8c41060936b9e508beb1abc1bab" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.6.2.tgz#0418bfa6358dd117894c8af396706cfa2b186032"
integrity sha512-WGC7n2IS7GIbCCfVvu58Qncmj6qUBYbI/DxPVHGffDuY5y5l+OI2YIr5UXyR8+G9Ly1d6iYbX6l6l+Rw6F6gHA== integrity sha512-DNWyl+NNU2VsfHtXwOr4rV9hnQFPkl2/dNXeouhk9q7bXCWdEh3K8YTt/frULGVKbQjtnlPmz8C+LFI/JZ2N3w==
dependencies: dependencies:
"@graphql-typed-document-node/core" "^3.1.1" "@graphql-typed-document-node/core" "^3.1.1"
"@wry/context" "^0.6.0" "@wry/context" "^0.6.0"
@ -1317,9 +1317,9 @@
integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==
"@jridgewell/sourcemap-codec@^1.4.10": "@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.11" version "1.4.12"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz#7ed98f6fa525ffb7c56a2cbecb5f7bb91abd2baf"
integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== integrity sha512-az/NhpIwP3K33ILr0T2bso+k2E/SLf8Yidd8mHl0n6sCQ4YdyC8qDhZA6kOPDNDBA56ZnIjngVl0U3jREA0BUA==
"@jridgewell/trace-mapping@^0.3.9": "@jridgewell/trace-mapping@^0.3.9":
version "0.3.9" version "0.3.9"
@ -1922,9 +1922,9 @@
"@types/istanbul-lib-report" "*" "@types/istanbul-lib-report" "*"
"@types/jest@^27.0.1", "@types/jest@^27.0.2": "@types/jest@^27.0.1", "@types/jest@^27.0.2":
version "27.4.1" version "27.5.0"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.0.tgz#e04ed1824ca6b1dd0438997ba60f99a7405d4c7b"
integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== integrity sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==
dependencies: dependencies:
jest-matcher-utils "^27.0.0" jest-matcher-utils "^27.0.0"
pretty-format "^27.0.0" pretty-format "^27.0.0"
@ -2054,9 +2054,9 @@
"@types/prosemirror-view" "*" "@types/prosemirror-view" "*"
"@types/prosemirror-model@*", "@types/prosemirror-model@^1.16.0", "@types/prosemirror-model@^1.7.2": "@types/prosemirror-model@*", "@types/prosemirror-model@^1.16.0", "@types/prosemirror-model@^1.7.2":
version "1.16.1" version "1.16.2"
resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.16.1.tgz#0ce6c80cd81b398b8a11b1bf7cf695bff3160c9a" resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.16.2.tgz#8896adac3a5d5d66f06491bb13940aa734a7b6e8"
integrity sha512-SrrCe2cHlYrQ9o55e2i/c3wt1yRajTTpRLvzfmB+2DWjWEbBLTByVWyjrdpKtQTxAaTeU2aeDGo1iuwl/jF27w== integrity sha512-1XPJopkKP3oHSBP61uuSuW13DIDZPWvAzP6Pv2/6mixk8EBPUeRGIW548DjJTicMo23gEg1zvCZy9asblQdWag==
dependencies: dependencies:
"@types/orderedmap" "*" "@types/orderedmap" "*"
@ -2070,25 +2070,25 @@
"@types/prosemirror-state" "*" "@types/prosemirror-state" "*"
"@types/prosemirror-state@*", "@types/prosemirror-state@^1.2.4", "@types/prosemirror-state@^1.2.8": "@types/prosemirror-state@*", "@types/prosemirror-state@^1.2.4", "@types/prosemirror-state@^1.2.8":
version "1.2.8" version "1.3.0"
resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.2.8.tgz#65080eeec52f63c50bf7034377f07773b4f6b2ac" resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.3.0.tgz#7fd25db7244c027eef0849d79b112a8a0dfbb483"
integrity sha512-mq9uyQWcpu8jeamO6Callrdvf/e1H/aRLR2kZWSpZrPHctEsxWHBbluD/wqVjXBRIOoMHLf6ZvOkrkmGLoCHVA== integrity sha512-nMdUF6w8B++NH4V54X+4GvDty7M02UfuHQW0s1AS25Z4ZrOW4RSY2+s57doXBbeMSjzYV/QoMxCY2sT3KQ2VdQ==
dependencies: dependencies:
"@types/prosemirror-model" "*" "@types/prosemirror-model" "*"
"@types/prosemirror-transform" "*" "@types/prosemirror-transform" "*"
"@types/prosemirror-view" "*" "@types/prosemirror-view" "*"
"@types/prosemirror-transform@*", "@types/prosemirror-transform@^1.1.5": "@types/prosemirror-transform@*", "@types/prosemirror-transform@^1.1.5":
version "1.1.6" version "1.4.0"
resolved "https://registry.yarnpkg.com/@types/prosemirror-transform/-/prosemirror-transform-1.1.6.tgz#4a06979f656331c46c2725039a57360cc35853af" resolved "https://registry.yarnpkg.com/@types/prosemirror-transform/-/prosemirror-transform-1.4.0.tgz#dbbc3f94b5879bb5e2027b908447e768a963ec6f"
integrity sha512-7HwXOWc5vZQqIfEUUVAz13lPgBqAWJTv89qEpzAtBFB6hOszFmhsvQ02Jqe2LvKauAoJDa3Qpv/dbJAmgyiTuQ== integrity sha512-ntfuTl9nJWHvFykCmqJj4YQMws6G5H9nBaxHW0xRqfTxDxUvX2bCloqRN7bQTWg9h3VSP2lx45UuET1fn/oQ9Q==
dependencies: dependencies:
"@types/prosemirror-model" "*" "@types/prosemirror-model" "*"
"@types/prosemirror-view@*", "@types/prosemirror-view@^1.11.4", "@types/prosemirror-view@^1.23.1": "@types/prosemirror-view@*", "@types/prosemirror-view@^1.11.4", "@types/prosemirror-view@^1.23.1":
version "1.23.1" version "1.23.2"
resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.23.1.tgz#a9a926bb6b6e6873e3a9d8caa61c32f3402629eb" resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.23.2.tgz#1e9b90ccf7947c647b2757eb758e46af9a58138e"
integrity sha512-6e1B2oKUnhmZPUrsVvYjDqeVjE6jGezygjtoHsAK4ZENAxHzHqy5NT4jUvdPTWjCYeH0t2Y7pSfRPNrPIyQX4A== integrity sha512-P/qlXsUAZeZVJQkIy6hzc1RBWbeQIN01jtUo686ou7O8RDXWVKpVYMa1soR8nfUfKE8QHvCjCVe+7u6V3C/1fw==
dependencies: dependencies:
"@types/prosemirror-model" "*" "@types/prosemirror-model" "*"
"@types/prosemirror-state" "*" "@types/prosemirror-state" "*"
@ -2197,13 +2197,13 @@
"@types/yargs-parser" "*" "@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^5.0.0", "@typescript-eslint/eslint-plugin@^5.3.0": "@typescript-eslint/eslint-plugin@^5.0.0", "@typescript-eslint/eslint-plugin@^5.3.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.21.0.tgz#bfc22e0191e6404ab1192973b3b4ea0461c1e878" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz#7b52a0de2e664044f28b36419210aea4ab619e2a"
integrity sha512-fTU85q8v5ZLpoZEyn/u1S2qrFOhi33Edo2CZ0+q1gDaWWm0JuPh3bgOyU8lM0edIEYgKLDkPFiZX2MOupgjlyg== integrity sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.21.0" "@typescript-eslint/scope-manager" "5.22.0"
"@typescript-eslint/type-utils" "5.21.0" "@typescript-eslint/type-utils" "5.22.0"
"@typescript-eslint/utils" "5.21.0" "@typescript-eslint/utils" "5.22.0"
debug "^4.3.2" debug "^4.3.2"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
ignore "^5.1.8" ignore "^5.1.8"
@ -2212,68 +2212,68 @@
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.10.0", "@typescript-eslint/parser@^5.3.0": "@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.10.0", "@typescript-eslint/parser@^5.3.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.21.0.tgz#6cb72673dbf3e1905b9c432175a3c86cdaf2071f" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.22.0.tgz#7bedf8784ef0d5d60567c5ba4ce162460e70c178"
integrity sha512-8RUwTO77hstXUr3pZoWZbRQUxXcSXafZ8/5gpnQCfXvgmP9gpNlRGlWzvfbEQ14TLjmtU8eGnONkff8U2ui2Eg== integrity sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.21.0" "@typescript-eslint/scope-manager" "5.22.0"
"@typescript-eslint/types" "5.21.0" "@typescript-eslint/types" "5.22.0"
"@typescript-eslint/typescript-estree" "5.21.0" "@typescript-eslint/typescript-estree" "5.22.0"
debug "^4.3.2" debug "^4.3.2"
"@typescript-eslint/scope-manager@5.21.0": "@typescript-eslint/scope-manager@5.22.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.21.0.tgz#a4b7ed1618f09f95e3d17d1c0ff7a341dac7862e" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz#590865f244ebe6e46dc3e9cab7976fc2afa8af24"
integrity sha512-XTX0g0IhvzcH/e3393SvjRCfYQxgxtYzL3UREteUneo72EFlt7UNoiYnikUtmGVobTbhUDByhJ4xRBNe+34kOQ== integrity sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==
dependencies: dependencies:
"@typescript-eslint/types" "5.21.0" "@typescript-eslint/types" "5.22.0"
"@typescript-eslint/visitor-keys" "5.21.0" "@typescript-eslint/visitor-keys" "5.22.0"
"@typescript-eslint/type-utils@5.21.0": "@typescript-eslint/type-utils@5.22.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.21.0.tgz#ff89668786ad596d904c21b215e5285da1b6262e" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz#0c0e93b34210e334fbe1bcb7250c470f4a537c19"
integrity sha512-MxmLZj0tkGlkcZCSE17ORaHl8Th3JQwBzyXL/uvC6sNmu128LsgjTX0NIzy+wdH2J7Pd02GN8FaoudJntFvSOw== integrity sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==
dependencies: dependencies:
"@typescript-eslint/utils" "5.21.0" "@typescript-eslint/utils" "5.22.0"
debug "^4.3.2" debug "^4.3.2"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/types@5.21.0": "@typescript-eslint/types@5.22.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.21.0.tgz#8cdb9253c0dfce3f2ab655b9d36c03f72e684017" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.22.0.tgz#50a4266e457a5d4c4b87ac31903b28b06b2c3ed0"
integrity sha512-XnOOo5Wc2cBlq8Lh5WNvAgHzpjnEzxn4CJBwGkcau7b/tZ556qrWXQz4DJyChYg8JZAD06kczrdgFPpEQZfDsA== integrity sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==
"@typescript-eslint/typescript-estree@5.21.0": "@typescript-eslint/typescript-estree@5.22.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.21.0.tgz#9f0c233e28be2540eaed3df050f0d54fb5aa52de" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz#e2116fd644c3e2fda7f4395158cddd38c0c6df97"
integrity sha512-Y8Y2T2FNvm08qlcoSMoNchh9y2Uj3QmjtwNMdRQkcFG7Muz//wfJBGBxh8R7HAGQFpgYpdHqUpEoPQk+q9Kjfg== integrity sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==
dependencies: dependencies:
"@typescript-eslint/types" "5.21.0" "@typescript-eslint/types" "5.22.0"
"@typescript-eslint/visitor-keys" "5.21.0" "@typescript-eslint/visitor-keys" "5.22.0"
debug "^4.3.2" debug "^4.3.2"
globby "^11.0.4" globby "^11.0.4"
is-glob "^4.0.3" is-glob "^4.0.3"
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/utils@5.21.0": "@typescript-eslint/utils@5.22.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.21.0.tgz#51d7886a6f0575e23706e5548c7e87bce42d7c18" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.22.0.tgz#1f2c4897e2cf7e44443c848a13c60407861babd8"
integrity sha512-q/emogbND9wry7zxy7VYri+7ydawo2HDZhRZ5k6yggIvXa7PvBbAAZ4PFH/oZLem72ezC4Pr63rJvDK/sTlL8Q== integrity sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==
dependencies: dependencies:
"@types/json-schema" "^7.0.9" "@types/json-schema" "^7.0.9"
"@typescript-eslint/scope-manager" "5.21.0" "@typescript-eslint/scope-manager" "5.22.0"
"@typescript-eslint/types" "5.21.0" "@typescript-eslint/types" "5.22.0"
"@typescript-eslint/typescript-estree" "5.21.0" "@typescript-eslint/typescript-estree" "5.22.0"
eslint-scope "^5.1.1" eslint-scope "^5.1.1"
eslint-utils "^3.0.0" eslint-utils "^3.0.0"
"@typescript-eslint/visitor-keys@5.21.0": "@typescript-eslint/visitor-keys@5.22.0":
version "5.21.0" version "5.22.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.21.0.tgz#453fb3662409abaf2f8b1f65d515699c888dd8ae" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz#f49c0ce406944ffa331a1cfabeed451ea4d0909c"
integrity sha512-SX8jNN+iHqAF0riZQMkm7e8+POXa/fXw5cxL+gjpyP+FI+JVNhii53EmQgDAfDcBpFekYSlO0fGytMQwRiMQCA== integrity sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==
dependencies: dependencies:
"@typescript-eslint/types" "5.21.0" "@typescript-eslint/types" "5.22.0"
eslint-visitor-keys "^3.0.0" eslint-visitor-keys "^3.0.0"
"@vue-a11y/announcer@^2.1.0": "@vue-a11y/announcer@^2.1.0":
@ -3123,12 +3123,12 @@ at-least-node@^1.0.0:
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
autoprefixer@^10, autoprefixer@^10.2.4: autoprefixer@^10, autoprefixer@^10.2.4:
version "10.4.6" version "10.4.7"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.6.tgz#ce6eba3aea7c03adf0f6a907bd594fd170b3f0b6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf"
integrity sha512-Rvzel0AZO9tJNm3ydySK80PpkWoEZTGC5bHUh/xbrP8qJCy08NFBwNGPcozy3d3SDIM0b2kNxw2K7jAIYFF01A== integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==
dependencies: dependencies:
browserslist "^4.20.3" browserslist "^4.20.3"
caniuse-lite "^1.0.30001334" caniuse-lite "^1.0.30001335"
fraction.js "^4.2.0" fraction.js "^4.2.0"
normalize-range "^0.1.2" normalize-range "^0.1.2"
picocolors "^1.0.0" picocolors "^1.0.0"
@ -3483,7 +3483,7 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2" lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001334: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335:
version "1.0.30001335" version "1.0.30001335"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a"
integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w==
@ -3826,9 +3826,9 @@ copy-webpack-plugin@^9.0.1:
serialize-javascript "^6.0.0" serialize-javascript "^6.0.0"
core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.8.3: core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.8.3:
version "3.22.3" version "3.22.4"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.3.tgz#9b10d786052d042bc97ee8df9c0d1fb6a49c2005" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579"
integrity sha512-wliMbvPI2idgFWpFe7UEyHMvu6HWgW8WA+HnDRtgzoSDYvXFMpoGX1H3tPDDXrcfUSyXafCLDd7hOeMQHEZxGw== integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA==
dependencies: dependencies:
browserslist "^4.20.3" browserslist "^4.20.3"
semver "7.0.0" semver "7.0.0"
@ -3844,9 +3844,9 @@ core-js@^2.4.0, core-js@^2.5.0:
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.6.4, core-js@^3.8.3: core-js@^3.6.4, core-js@^3.8.3:
version "3.22.3" version "3.22.4"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.3.tgz#498c41d997654cb00e81c7a54b44f0ab21ab01d5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.4.tgz#f4b3f108d45736935aa028444a69397e40d8c531"
integrity sha512-1t+2a/d2lppW1gkLXx3pKPVGbBdxXAkqztvWb1EJ8oF8O2gIGiytzflNiFEehYwVK/t2ryUsGBoOFFvNx95mbg== integrity sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==
core-util-is@~1.0.0: core-util-is@~1.0.0:
version "1.0.3" version "1.0.3"
@ -4139,7 +4139,7 @@ define-lazy-prop@^2.0.0:
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
define-properties@^1.1.3: define-properties@^1.1.3, define-properties@^1.1.4:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
@ -4347,9 +4347,9 @@ ejs@^3.1.6:
jake "^10.8.5" jake "^10.8.5"
electron-to-chromium@^1.4.118: electron-to-chromium@^1.4.118:
version "1.4.129" version "1.4.131"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.131.tgz#ca42d22eac0fe545860fbc636a6f4a7190ba70a9"
integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== integrity sha512-oi3YPmaP87hiHn0c4ePB67tXaF+ldGhxvZnT19tW9zX6/Ej+pLN0Afja5rQ6S+TND7I9EuwQTT8JYn1k7R7rrw==
emittery@^0.10.2: emittery@^0.10.2:
version "0.10.2" version "0.10.2"
@ -4415,7 +4415,7 @@ error-stack-parser@^2.0.6:
dependencies: dependencies:
stackframe "^1.1.1" stackframe "^1.1.1"
es-abstract@^1.19.1, es-abstract@^1.19.2: es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5:
version "1.19.5" version "1.19.5"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1"
integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA== integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==
@ -6939,9 +6939,9 @@ mz@^2.4.0:
thenify-all "^1.0.0" thenify-all "^1.0.0"
nanoid@^3.3.3: nanoid@^3.3.3:
version "3.3.3" version "3.3.4"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
natural-compare@^1.4.0: natural-compare@^1.4.0:
version "1.4.0" version "1.4.0"
@ -8725,20 +8725,22 @@ string.prototype.matchall@^4.0.6:
side-channel "^1.0.4" side-channel "^1.0.4"
string.prototype.trimend@^1.0.4: string.prototype.trimend@^1.0.4:
version "1.0.4" version "1.0.5"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0"
integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
define-properties "^1.1.3" define-properties "^1.1.4"
es-abstract "^1.19.5"
string.prototype.trimstart@^1.0.4: string.prototype.trimstart@^1.0.4:
version "1.0.4" version "1.0.5"
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef"
integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
define-properties "^1.1.3" define-properties "^1.1.4"
es-abstract "^1.19.5"
string_decoder@^1.1.1: string_decoder@^1.1.1:
version "1.3.0" version "1.3.0"

View File

@ -228,13 +228,13 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do
|> Enum.uniq() |> Enum.uniq()
end end
defp add_event_contacts(%Event{contacts: contacts}) do defp add_event_contacts(%Event{contacts: contacts}) when is_list(contacts) do
contacts contacts
|> Enum.map(& &1.url) |> Enum.map(& &1.url)
|> Enum.uniq() |> Enum.uniq()
end end
defp add_event_contacts(%Event{}), do: [] defp add_event_contacts(_), do: []
defp process_mention({_, mentioned_actor}), do: mentioned_actor.url defp process_mention({_, mentioned_actor}), do: mentioned_actor.url

View File

@ -191,8 +191,8 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
defp process_collection(_, _), do: :error defp process_collection(_, _), do: :error
# If we're handling an activity # If we're handling an activity
@spec handling_element(map()) :: {:ok, any, struct} | :error @spec handling_element(map() | String.t()) ::
@spec handling_element(String.t()) :: {:ok, struct} | {:ok, atom, struct} | {:error, any()} {:ok, any, struct} | {:ok, struct} | {:ok, atom, struct} | {:error, any()} | :error
defp handling_element(%{"type" => activity_type} = data) defp handling_element(%{"type" => activity_type} = data)
when activity_type in ["Create", "Update", "Delete"] do when activity_type in ["Create", "Update", "Delete"] do
object = get_in(data, ["object"]) object = get_in(data, ["object"])

View File

@ -192,5 +192,5 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
Map.put(res, "location", AddressConverter.model_to_as(physical_address)) Map.put(res, "location", AddressConverter.model_to_as(physical_address))
end end
defp maybe_add_physical_address(res, %ActorModel{physical_address: _}), do: res defp maybe_add_physical_address(res, _), do: res
end end

View File

@ -48,12 +48,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Discussion do
@impl Converter @impl Converter
@spec as_to_model_data(map) :: map() | {:error, atom()} @spec as_to_model_data(map) :: map() | {:error, atom()}
def as_to_model_data(%{"type" => "Note", "name" => name} = object) when is_valid_string(name) do def as_to_model_data(%{"type" => "Note", "name" => name} = object) when is_valid_string(name) do
case extract_actors(object) do with %{actor_id: actor_id, creator_id: creator_id} <- extract_actors(object) do
%{actor_id: actor_id, creator_id: creator_id} -> %{actor_id: actor_id, creator_id: creator_id, title: name, url: object["id"]}
%{actor_id: actor_id, creator_id: creator_id, title: name, url: object["id"]}
{:error, error} ->
{:error, error}
end end
end end

View File

@ -46,22 +46,18 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Media do
actor_id actor_id
) )
when is_binary(media_url) do when is_binary(media_url) do
case upload_media(media_url, name) do with {:ok, %{url: url} = uploaded} <- upload_media(media_url, name) do
{:error, err} -> case Medias.get_media_by_url(url) do
{:error, err} %MediaModel{file: _file} = media ->
{:ok, media}
{:ok, %{url: url} = uploaded} -> nil ->
case Medias.get_media_by_url(url) do Medias.create_media(%{
%MediaModel{file: _file} = media -> file: Map.take(uploaded, [:url, :name, :content_type, :size]),
{:ok, media} metadata: Map.take(uploaded, [:width, :height, :blurhash]),
actor_id: actor_id
nil -> })
Medias.create_media(%{ end
file: Map.take(uploaded, [:url, :name, :content_type, :size]),
metadata: Map.take(uploaded, [:width, :height, :blurhash]),
actor_id: actor_id
})
end
end end
end end

View File

@ -4,9 +4,9 @@ defmodule Mobilizon.GraphQL.Resolvers.Event.Utils do
""" """
alias Mobilizon.Actors.Actor alias Mobilizon.Actors.Actor
alias Mobilizon.{Config, Events} alias Mobilizon.Events
alias Mobilizon.Events.Event alias Mobilizon.Events.Event
alias Mobilizon.Federation.ActivityPub.Permission alias Mobilizon.Federation.ActivityPub.{Permission, Relay}
import Mobilizon.Service.Guards, only: [is_valid_string: 1] import Mobilizon.Service.Guards, only: [is_valid_string: 1]
@spec can_event_be_updated_by?(Event.t(), Actor.t()) :: @spec can_event_be_updated_by?(Event.t(), Actor.t()) ::
@ -43,7 +43,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Event.Utils do
def check_event_access?(%Event{local: true}), do: true def check_event_access?(%Event{local: true}), do: true
def check_event_access?(%Event{url: url}) do def check_event_access?(%Event{url: url}) do
relay_actor_id = Config.relay_actor_id() relay_actor = Relay.get_actor()
Events.check_if_event_has_instance_follow(url, relay_actor_id) Events.check_if_event_has_instance_follow(url, relay_actor.id)
end end
end end

View File

@ -848,7 +848,13 @@ defmodule Mobilizon.Actors do
@doc """ @doc """
Returns a paginated list of members for a group. Returns a paginated list of members for a group.
""" """
@spec list_members_for_group(Actor.t(), list(atom()), integer | nil, integer | nil) :: @spec list_members_for_group(
Actor.t(),
String.t() | nil,
list(atom()),
integer | nil,
integer | nil
) ::
Page.t(Member.t()) Page.t(Member.t())
def list_members_for_group( def list_members_for_group(
%Actor{id: group_id, type: :Group}, %Actor{id: group_id, type: :Group},

View File

@ -322,8 +322,6 @@ defmodule Mobilizon.Config do
@spec anonymous_actor_id :: integer @spec anonymous_actor_id :: integer
def anonymous_actor_id, do: get_cached_value(:anonymous_actor_id) def anonymous_actor_id, do: get_cached_value(:anonymous_actor_id)
@spec relay_actor_id :: integer
def relay_actor_id, do: get_cached_value(:relay_actor_id)
@spec admin_settings :: map @spec admin_settings :: map
def admin_settings, do: get_cached_value(:admin_config) def admin_settings, do: get_cached_value(:admin_config)
@ -401,16 +399,6 @@ defmodule Mobilizon.Config do
end end
end end
defp create_cache(:relay_actor_id) do
case Actors.get_or_create_internal_actor("relay") do
{:ok, %{id: actor_id}} ->
{:ok, actor_id}
{:error, err} ->
{:error, err}
end
end
defp create_cache(:admin_config) do defp create_cache(:admin_config) do
data = %{ data = %{
instance_description: instance_description(), instance_description: instance_description(),

View File

@ -28,6 +28,7 @@ defmodule Mobilizon.Events do
Track Track
} }
alias Mobilizon.Federation.ActivityPub.Relay
alias Mobilizon.Service.Export.Cachable alias Mobilizon.Service.Export.Cachable
alias Mobilizon.Service.Workers.BuildSearch alias Mobilizon.Service.Workers.BuildSearch
alias Mobilizon.Service.Workers.EventDelayedNotificationWorker alias Mobilizon.Service.Workers.EventDelayedNotificationWorker
@ -1676,7 +1677,7 @@ defmodule Mobilizon.Events do
@spec filter_local_or_from_followed_instances_events(Ecto.Queryable.t()) :: @spec filter_local_or_from_followed_instances_events(Ecto.Queryable.t()) ::
Ecto.Query.t() Ecto.Query.t()
defp filter_local_or_from_followed_instances_events(query) do defp filter_local_or_from_followed_instances_events(query) do
follower_actor_id = Mobilizon.Config.relay_actor_id() %Actor{id: follower_actor_id} = Relay.get_actor()
query query
|> join(:left, [q], s in Share, on: s.uri == q.url) |> join(:left, [q], s in Share, on: s.uri == q.url)

View File

@ -29,7 +29,7 @@ defmodule Mobilizon.Service.Activity.Renderer do
@type common_render :: %{body: String.t(), url: String.t()} @type common_render :: %{body: String.t(), url: String.t()}
@callback render(entity :: Activity.t(), Keyword.t()) :: common_render() @callback render(activity :: Activity.t(), Keyword.t()) :: common_render()
@spec render(Activity.t()) :: render() @spec render(Activity.t()) :: render()
def render(%Activity{} = activity, options \\ []) do def render(%Activity{} = activity, options \\ []) do

View File

@ -72,7 +72,7 @@ defmodule Mobilizon.Service.Geospatial.GoogleMaps do
end end
end end
@spec build_url(:search | :geocode, map(), list()) :: String.t() | no_return @spec build_url(:search | :geocode | :place_details, map(), list()) :: String.t() | no_return
defp build_url(method, args, options) do defp build_url(method, args, options) do
limit = Keyword.get(options, :limit, 10) limit = Keyword.get(options, :limit, 10)
lang = Keyword.get(options, :lang, "en") lang = Keyword.get(options, :lang, "en")

View File

@ -289,7 +289,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
{:ok, nil} {:ok, nil}
# Sending to calculated time # Sending to calculated time
true -> match?(%DateTime{}, send_at) ->
Notification.enqueue(:pending_membership_notification, params, scheduled_at: send_at) Notification.enqueue(:pending_membership_notification, params, scheduled_at: send_at)
end end
end end

View File

@ -73,7 +73,7 @@ defmodule Mobilizon.Service.Notifier.Push do
Map.get(@default_behavior, activity_setting, false) Map.get(@default_behavior, activity_setting, false)
end end
@spec send_subscription(Activity.t(), any, Keyword.t()) :: no_return @spec send_subscription(Activity.t(), any, Keyword.t()) :: any()
defp send_subscription(activity, subscription, options) do defp send_subscription(activity, subscription, options) do
activity activity
|> payload(options) |> payload(options)

View File

@ -41,7 +41,7 @@ defmodule Mobilizon.Service.Workers.Helper do
alias Oban.Job alias Oban.Job
@spec enqueue(String.t() | :atom, map(), Keyword.t()) :: @spec enqueue(String.t() | atom(), map(), Keyword.t()) ::
{:ok, Job.t()} | {:error, Ecto.Changeset.t()} {:ok, Job.t()} | {:error, Ecto.Changeset.t()}
def enqueue(operation, params, worker_args \\ []) do def enqueue(operation, params, worker_args \\ []) do
params = Map.merge(%{"op" => operation}, params) params = Map.merge(%{"op" => operation}, params)

View File

@ -13,12 +13,12 @@ defmodule Mobilizon.Web.Email.Follow do
alias Mobilizon.Web.Email alias Mobilizon.Web.Email
@doc """ @doc """
Send follow notification to admins if the followed actor Send follow notification to admins if the followed actor is the relay and the actor follower is an instance
""" """
@spec send_notification_to_admins(Follower.t()) :: :ok @spec send_notification_to_admins(Follower.t()) :: :ok
def send_notification_to_admins( def send_notification_to_admins(
%Follower{ %Follower{
# approved: false, approved: false,
actor: %Actor{type: :Application} = follower, actor: %Actor{type: :Application} = follower,
target_actor: %Actor{id: target_actor_id} target_actor: %Actor{id: target_actor_id}
} = _follow } = _follow

View File

@ -1,7 +1,7 @@
defmodule Mobilizon.Mixfile do defmodule Mobilizon.Mixfile do
use Mix.Project use Mix.Project
@version "2.1.0-rc.3" @version "2.1.0-rc.4"
def project do def project do
[ [

View File

@ -68,7 +68,6 @@
"html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"}, "html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"},
"http_signatures": {:hex, :http_signatures, "0.1.1", "ca7ebc1b61542b163644c8c3b1f0e0f41037d35f2395940d3c6c7deceab41fd8", [:mix], [], "hexpm", "cc3b8a007322cc7b624c0c15eec49ee58ac977254ff529a3c482f681465942a3"}, "http_signatures": {:hex, :http_signatures, "0.1.1", "ca7ebc1b61542b163644c8c3b1f0e0f41037d35f2395940d3c6c7deceab41fd8", [:mix], [], "hexpm", "cc3b8a007322cc7b624c0c15eec49ee58ac977254ff529a3c482f681465942a3"},
"httpoison": {:hex, :httpoison, "1.8.1", "df030d96de89dad2e9983f92b0c506a642d4b1f4a819c96ff77d12796189c63e", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "35156a6d678d6d516b9229e208942c405cf21232edd632327ecfaf4fd03e79e0"}, "httpoison": {:hex, :httpoison, "1.8.1", "df030d96de89dad2e9983f92b0c506a642d4b1f4a819c96ff77d12796189c63e", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "35156a6d678d6d516b9229e208942c405cf21232edd632327ecfaf4fd03e79e0"},
"hut": {:hex, :hut, "1.3.0", "71f2f054e657c03f959cf1acc43f436ea87580696528ca2a55c8afb1b06c85e7", [:"erlang.mk", :rebar, :rebar3], [], "hexpm", "7e15d28555d8a1f2b5a3a931ec120af0753e4853a4c66053db354f35bf9ab563"},
"icalendar": {:git, "https://github.com/tcitworld/icalendar.git", "1033d922c82a7223db0ec138e2316557b70ff49f", []}, "icalendar": {:git, "https://github.com/tcitworld/icalendar.git", "1033d922c82a7223db0ec138e2316557b70ff49f", []},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"},

View File

@ -1243,7 +1243,7 @@ msgstr "Your participation to event %{title} has been approved"
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
#: lib/web/templates/email/report.html.heex:41 #: lib/web/templates/email/report.html.heex:41
msgid "<b>%{reporter}</b> reported the following content." msgid "<b>%{reporter}</b> reported the following content."
msgstr "%{reporter_name} (%{reporter_username}) reported the following content." msgstr "<b>%{reporter}</b> reported the following content."
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
#: lib/web/templates/email/report.text.eex:5 #: lib/web/templates/email/report.text.eex:5

View File

@ -5,8 +5,11 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do
import Mobilizon.Factory import Mobilizon.Factory
alias Mobilizon.Actors alias Mobilizon.Actors
alias Mobilizon.Actors.Follower alias Mobilizon.Actors.Follower
alias Mobilizon.Federation.ActivityPub.{Actions, Activity, Transmogrifier} alias Mobilizon.Federation.ActivityPub.{Actions, Activity, Relay, Transmogrifier}
alias Mobilizon.Service.HTTP.ActivityPub.Mock alias Mobilizon.Service.HTTP.ActivityPub.Mock
alias Mobilizon.Users.User
import Swoosh.TestAssertions
describe "handle incoming follow requests" do describe "handle incoming follow requests" do
test "it works only for groups" do test "it works only for groups" do
@ -99,6 +102,83 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do
# assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2" # assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2"
# assert User.check_follow(User.get_by_ap_id(data["actor"]), user) # assert User.check_follow(User.get_by_ap_id(data["actor"]), user)
# end # end
test "it works for accepting instance follow from user" do
%User{} = insert(:user, email: "loulou@example.com", role: :administrator)
relay = Relay.get_actor()
actor_data =
File.read!("test/fixtures/mastodon-actor.json")
|> Jason.decode!()
Mock
|> expect(:call, fn
%{method: :get, url: "https://social.tcit.fr/users/tcit"}, _opts ->
{:ok,
%Tesla.Env{
status: 200,
body: Map.put(actor_data, "id", "https://social.tcit.fr/users/tcit")
}}
end)
data =
File.read!("test/fixtures/mastodon-follow-activity.json")
|> Jason.decode!()
|> Map.put("object", relay.url)
{:ok, %Activity{data: data, local: false}, _} = Transmogrifier.handle_incoming(data)
assert data["actor"] == "https://social.tcit.fr/users/tcit"
assert data["type"] == "Follow"
assert data["id"] == "https://social.tcit.fr/users/tcit#follows/2"
follow = Actors.check_follow(Actors.get_actor_by_url!(data["actor"], true), relay)
assert follow
refute follow.approved
refute_email_sent()
end
test "it works for accepting instance follow from other instance" do
%User{email: admin_email} = insert(:user, email: "loulou@example.com", role: :administrator)
relay = Relay.get_actor()
actor_data =
File.read!("test/fixtures/mastodon-actor.json")
|> Jason.decode!()
Mock
|> expect(:call, fn
%{method: :get, url: "https://mobilizon.fr/relay"}, _opts ->
{:ok,
%Tesla.Env{
status: 200,
body:
actor_data
|> Map.put("id", "https://mobilizon.fr/relay")
|> Map.put("type", "Application")
}}
end)
data =
File.read!("test/fixtures/mastodon-follow-activity.json")
|> Jason.decode!()
|> Map.put("actor", "https://mobilizon.fr/relay")
|> Map.put("id", "https://mobilizon.fr/relay#follows/2")
|> Map.put("object", relay.url)
{:ok, %Activity{data: data, local: false}, _} = Transmogrifier.handle_incoming(data)
assert data["actor"] == "https://mobilizon.fr/relay"
assert data["type"] == "Follow"
assert data["id"] == "https://mobilizon.fr/relay#follows/2"
follow = Actors.check_follow(Actors.get_actor_by_url!(data["actor"], true), relay)
assert follow
refute follow.approved
assert_email_sent(to: admin_email)
end
end end
describe "handle incoming follow accept activities" do describe "handle incoming follow accept activities" do

View File

@ -7,10 +7,11 @@ defmodule Mobilizon.GraphQL.Resolvers.ReportTest do
alias Mobilizon.Actors.Actor alias Mobilizon.Actors.Actor
alias Mobilizon.Config alias Mobilizon.Config
alias Mobilizon.Events.Event alias Mobilizon.Events.Event
alias Mobilizon.GraphQL.AbsintheHelpers
alias Mobilizon.Reports.{Note, Report} alias Mobilizon.Reports.{Note, Report}
alias Mobilizon.Users.User alias Mobilizon.Users.User
alias Mobilizon.GraphQL.AbsintheHelpers import Swoosh.TestAssertions
describe "Resolver: Report a content" do describe "Resolver: Report a content" do
@create_report_mutation """ @create_report_mutation """
@ -41,6 +42,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ReportTest do
end end
test "create_report/3 creates a report", %{conn: conn} do test "create_report/3 creates a report", %{conn: conn} do
%User{email: admin_email} = insert(:user, email: "loulou@example.com", role: :administrator)
%User{} = user_reporter = insert(:user) %User{} = user_reporter = insert(:user)
%Actor{} = reporter = insert(:actor, user: user_reporter) %Actor{} = reporter = insert(:actor, user: user_reporter)
%Actor{} = reported = insert(:actor) %Actor{} = reported = insert(:actor)
@ -65,6 +67,8 @@ defmodule Mobilizon.GraphQL.Resolvers.ReportTest do
assert res["data"]["createReport"]["reporter"]["id"] == assert res["data"]["createReport"]["reporter"]["id"] ==
to_string(reporter.id) to_string(reporter.id)
assert_email_sent(to: admin_email)
end end
test "create_report/3 without being connected doesn't create any report", %{conn: conn} do test "create_report/3 without being connected doesn't create any report", %{conn: conn} do