From 72667bd2e198ab55d710fd6f8511156b7fe1b964 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Tue, 25 May 2021 14:34:24 +0530 Subject: [PATCH] using custom version of actix-codegen and cors for pow routes --- Cargo.lock | 297 ++++++++++++++++++++------------ src/api/v1/account/delete.rs | 20 ++- src/api/v1/account/email.rs | 36 ++-- src/api/v1/account/secret.rs | 20 +-- src/api/v1/account/username.rs | 11 +- src/api/v1/auth.rs | 20 +-- src/api/v1/mcaptcha/duration.rs | 34 ++-- src/api/v1/mcaptcha/levels.rs | 37 +--- src/api/v1/mcaptcha/mcaptcha.rs | 29 +--- src/api/v1/meta.rs | 14 +- src/api/v1/notifications/add.rs | 1 + src/api/v1/notifications/get.rs | 1 + src/api/v1/notifications/mod.rs | 18 +- src/api/v1/pow/get_config.rs | 3 + src/api/v1/pow/mod.rs | 76 ++++---- src/api/v1/pow/verify_pow.rs | 2 + src/api/v1/pow/verify_token.rs | 2 + src/pages/auth/login.rs | 5 +- src/pages/auth/mod.rs | 6 +- src/pages/auth/register.rs | 1 + src/pages/panel/mod.rs | 6 +- src/pages/panel/sitekey/add.rs | 1 + src/pages/panel/sitekey/list.rs | 1 + src/pages/panel/sitekey/mod.rs | 26 +-- src/pages/panel/sitekey/view.rs | 1 + src/routes.rs | 29 ---- 26 files changed, 334 insertions(+), 363 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c1c51b6e..0929ea5d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,7 +113,7 @@ dependencies = [ "pin-project 1.0.7", "rand 0.7.3", "regex", - "serde 1.0.125", + "serde 1.0.126", "serde_json", "serde_urlencoded", "sha-1", @@ -130,7 +130,7 @@ dependencies = [ "actix-service", "actix-web", "futures-util", - "serde 1.0.125", + "serde 1.0.126", "serde_json", "time 0.2.26", ] @@ -155,7 +155,7 @@ dependencies = [ "http", "log", "regex", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -294,7 +294,7 @@ dependencies = [ "mime", "pin-project 1.0.7", "regex", - "serde 1.0.125", + "serde 1.0.126", "serde_json", "serde_urlencoded", "socket2", @@ -317,7 +317,7 @@ dependencies = [ [[package]] name = "actix-web-codegen" version = "0.5.0-beta.2" -source = "git+https://github.com/realaravinth/actix-web#b91607bfb263d101c4a33b2b9b01b2093c1713d0" +source = "git+https://github.com/realaravinth/actix-web#437a15d3230402b8b8b8343afc48128513814ac9" dependencies = [ "proc-macro2", "quote", @@ -407,16 +407,16 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "0.7.15" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] @@ -520,7 +520,7 @@ dependencies = [ "mime", "percent-encoding", "rand 0.7.3", - "serde 1.0.125", + "serde 1.0.126", "serde_json", "serde_urlencoded", ] @@ -549,7 +549,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -652,13 +652,13 @@ dependencies = [ [[package]] name = "cache-buster" version = "0.2.0" -source = "git+https://github.com/realaravinth/cache-buster#874dec8180613b6dc654f82c6ef2f6660ec974e6" +source = "git+https://github.com/realaravinth/cache-buster#d970b7031cd90649e30dc297eb5eba74832153e8" dependencies = [ "data-encoding", "derive_builder 0.10.2", "mime", "mime_guess", - "serde 1.0.125", + "serde 1.0.126", "serde_json", "sha2", "walkdir", @@ -670,7 +670,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0226944a63d1bf35a3b5f948dd7c59e263db83695c9e8bffc4037de02e30f1d7" dependencies = [ - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -682,15 +682,15 @@ dependencies = [ "cargo-platform", "semver 0.11.0", "semver-parser 0.10.2", - "serde 1.0.125", + "serde 1.0.126", "serde_json", ] [[package]] name = "cc" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" [[package]] name = "cfg-if" @@ -722,7 +722,7 @@ dependencies = [ "lazy_static", "nom 5.1.2", "rust-ini", - "serde 1.0.125", + "serde 1.0.126", "serde-hjson", "serde_json", "toml", @@ -731,9 +731,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402da840495de3f976eaefc3485b7f5eb5b0bf9761f9a47be27fe975b3b8c2ec" +checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" [[package]] name = "constant_time_eq" @@ -771,10 +771,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" [[package]] -name = "cpuid-bool" -version = "0.1.2" +name = "cpufeatures" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" +checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8" +dependencies = [ + "libc", +] [[package]] name = "cpuid-bool" @@ -1005,9 +1008,9 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.13" +version = "0.99.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82b1b72f1263f214c0f823371768776c4f5841b942c9883aa8e5ec584fd0ba6" +checksum = "5cc7b9cef1e351660e5443924e4f43ab25fbbed3e9a5f052df3677deb4d6b320" dependencies = [ "convert_case", "proc-macro2", @@ -1048,7 +1051,7 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" dependencies = [ - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -1159,9 +1162,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d5813545e459ad3ca1bff9915e9ad7f1a47dc6a91b627ce321d5863b7dd253" +checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" dependencies = [ "futures-channel", "futures-core", @@ -1174,9 +1177,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" +checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" dependencies = [ "futures-core", "futures-sink", @@ -1184,15 +1187,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" +checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" [[package]] name = "futures-executor" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f6cb7042eda00f0049b1d2080aa4b93442997ee507eb3828e8bd7577f94c9d" +checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" dependencies = [ "futures-core", "futures-task", @@ -1201,16 +1204,17 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" +checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" [[package]] name = "futures-macro" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" +checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" dependencies = [ + "autocfg", "proc-macro-hack", "proc-macro2", "quote", @@ -1219,22 +1223,23 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23" +checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" [[package]] name = "futures-task" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" +checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" [[package]] name = "futures-util" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" +checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" dependencies = [ + "autocfg", "futures-channel", "futures-core", "futures-io", @@ -1281,9 +1286,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1328,7 +1333,7 @@ dependencies = [ "rand 0.8.3", "rust-embed", "sailfish", - "serde 1.0.125", + "serde 1.0.126", "serde_json", "serde_yaml", "sqlx", @@ -1466,9 +1471,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" +checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" [[package]] name = "humantime" @@ -1556,9 +1561,9 @@ checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" [[package]] name = "js-sys" -version = "0.3.50" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" +checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" dependencies = [ "wasm-bindgen", ] @@ -1612,9 +1617,9 @@ checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" [[package]] name = "lock_api" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3c91c24eae6777794bb1997ad98bbb87daf92890acab859f7eaa4320333176" +checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" dependencies = [ "scopeguard", ] @@ -1640,7 +1645,7 @@ dependencies = [ [[package]] name = "m_captcha" version = "0.1.3" -source = "git+https://github.com/mCaptcha/mCaptcha?branch=master#29cd8f4fd83a3646a48ca2c9f5563d8d5360d2c3" +source = "git+https://github.com/mCaptcha/mCaptcha?branch=master#8f0f0daf1e1cb36c848cada1c24dc3799d1e31b4" dependencies = [ "actix", "derive_builder 0.9.0", @@ -1649,7 +1654,7 @@ dependencies = [ "pow_sha256", "pretty_env_logger", "rand 0.8.3", - "serde 1.0.125", + "serde 1.0.126", "serde_json", ] @@ -1722,9 +1727,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "mime" @@ -1835,6 +1840,75 @@ dependencies = [ "version_check", ] +[[package]] +name = "num" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits 0.2.14", +] + +[[package]] +name = "num-bigint" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512" +dependencies = [ + "autocfg", + "num-integer", + "num-traits 0.2.14", + "serde 1.0.126", +] + +[[package]] +name = "num-complex" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" +dependencies = [ + "num-traits 0.2.14", + "serde 1.0.126", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits 0.2.14", +] + +[[package]] +name = "num-iter" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +dependencies = [ + "autocfg", + "num-integer", + "num-traits 0.2.14", +] + +[[package]] +name = "num-rational" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" +dependencies = [ + "autocfg", + "num-integer", + "num-traits 0.2.14", + "serde 1.0.126", +] + [[package]] name = "num-traits" version = "0.1.43" @@ -2017,7 +2091,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" dependencies = [ - "cpuid-bool 0.2.0", + "cpuid-bool", "opaque-debug", "universal-hash", ] @@ -2025,11 +2099,12 @@ dependencies = [ [[package]] name = "pow_sha256" version = "0.2.1" -source = "git+https://github.com/mcaptcha/pow_sha256#f97858cd639fa2f807603d2515a6ae09191629cd" +source = "git+https://github.com/mcaptcha/pow_sha256#8df560aaa85530f7824070d7d9d839d8cf6d0411" dependencies = [ "bincode", "derive_builder 0.10.2", - "serde 1.0.125", + "num", + "serde 1.0.126", "sha2", ] @@ -2182,7 +2257,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", ] [[package]] @@ -2214,18 +2289,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.4.6" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ "aho-corasick", "memchr", @@ -2234,9 +2309,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.23" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "resolv-conf" @@ -2420,7 +2495,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ "semver-parser 0.10.2", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -2446,9 +2521,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" +checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" dependencies = [ "serde_derive", ] @@ -2467,9 +2542,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" dependencies = [ "proc-macro2", "quote", @@ -2485,7 +2560,7 @@ dependencies = [ "indexmap", "itoa", "ryu", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -2497,7 +2572,7 @@ dependencies = [ "form_urlencoded", "itoa", "ryu", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -2508,19 +2583,19 @@ checksum = "15654ed4ab61726bf918a39cb8d98a2e2995b002387807fa6ba58fdf7f59bb23" dependencies = [ "dtoa", "linked-hash-map", - "serde 1.0.125", + "serde 1.0.126", "yaml-rust", ] [[package]] name = "sha-1" -version = "0.9.4" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfebf75d25bd900fd1e7d11501efab59bc846dbc76196839663e6637bba9f25f" +checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16" dependencies = [ "block-buffer", "cfg-if 1.0.0", - "cpuid-bool 0.1.2", + "cpufeatures", "digest", "opaque-debug", ] @@ -2533,13 +2608,13 @@ checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de" +checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" dependencies = [ "block-buffer", "cfg-if 1.0.0", - "cpuid-bool 0.1.2", + "cpufeatures", "digest", "opaque-debug", ] @@ -2644,7 +2719,7 @@ dependencies = [ "percent-encoding", "rand 0.7.3", "rustls", - "serde 1.0.125", + "serde 1.0.126", "sha-1", "sha2", "smallvec", @@ -2674,7 +2749,7 @@ dependencies = [ "lazy_static", "proc-macro2", "quote", - "serde 1.0.125", + "serde 1.0.126", "serde_json", "sha2", "sqlx-core", @@ -2733,7 +2808,7 @@ checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" dependencies = [ "proc-macro2", "quote", - "serde 1.0.125", + "serde 1.0.126", "serde_derive", "syn", ] @@ -2747,7 +2822,7 @@ dependencies = [ "base-x", "proc-macro2", "quote", - "serde 1.0.125", + "serde 1.0.126", "serde_derive", "serde_json", "sha1", @@ -2770,7 +2845,7 @@ dependencies = [ "new_debug_unreachable", "phf_shared", "precomputed-hash", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -2815,9 +2890,9 @@ checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" [[package]] name = "syn" -version = "1.0.71" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" dependencies = [ "proc-macro2", "quote", @@ -2852,18 +2927,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +checksum = "fa6f76457f59514c7eeb4e59d891395fab0b2fd1d40723ae737d64153392e9c6" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +checksum = "8a36768c0fbf1bb15eca10defa29526bda730a2376c2ab4393ccfa16fb1a318d" dependencies = [ "proc-macro2", "quote", @@ -3009,14 +3084,14 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ - "serde 1.0.125", + "serde 1.0.126", ] [[package]] name = "tracing" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ebdc2bb4498ab1ab5f5b73c5803825e60199229ccba0698170e3be0e7f959f" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ "cfg-if 1.0.0", "log", @@ -3026,9 +3101,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" +checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" dependencies = [ "lazy_static", ] @@ -3157,9 +3232,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.2.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ "form_urlencoded", "idna", @@ -3182,7 +3257,7 @@ dependencies = [ "idna", "lazy_static", "regex", - "serde 1.0.125", + "serde 1.0.126", "serde_derive", "serde_json", "url", @@ -3243,9 +3318,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.73" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" +checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -3253,9 +3328,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.73" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" +checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" dependencies = [ "bumpalo", "lazy_static", @@ -3268,9 +3343,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.73" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" +checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3278,9 +3353,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.73" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" +checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" dependencies = [ "proc-macro2", "quote", @@ -3291,15 +3366,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.73" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" +checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" [[package]] name = "web-sys" -version = "0.3.50" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" +checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/src/api/v1/account/delete.rs b/src/api/v1/account/delete.rs index ad365954..c5686170 100644 --- a/src/api/v1/account/delete.rs +++ b/src/api/v1/account/delete.rs @@ -22,6 +22,7 @@ use super::auth::Password; use crate::errors::*; use crate::Data; +#[my_codegen::post(path="crate::V1_API_ROUTES.account.delete", wrap="crate::CheckLogin")] async fn delete_account( id: Identity, payload: web::Json, @@ -59,13 +60,14 @@ async fn delete_account( } pub fn services(cfg: &mut actix_web::web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.account.delete, - Methods::ProtectPost, - delete_account - ); + cfg.service(delete_account); +// use crate::define_resource; +// use crate::V1_API_ROUTES; +// +// define_resource!( +// cfg, +// V1_API_ROUTES.account.delete, +// Methods::ProtectPost, +// delete_account +// ); } diff --git a/src/api/v1/account/email.rs b/src/api/v1/account/email.rs index 475d787c..ee4d64b9 100644 --- a/src/api/v1/account/email.rs +++ b/src/api/v1/account/email.rs @@ -29,6 +29,7 @@ pub struct Email { pub email: String, } +#[my_codegen::post(path="crate::V1_API_ROUTES.account.email_exists")] pub async fn email_exists( payload: web::Json, data: web::Data, @@ -52,6 +53,7 @@ pub async fn email_exists( } /// update email +#[my_codegen::post(path="crate::V1_API_ROUTES.account.update_email", wrap="crate::CheckLogin")] async fn set_email( id: Identity, payload: web::Json, @@ -84,20 +86,22 @@ async fn set_email( } pub fn services(cfg: &mut actix_web::web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.account.email_exists, - Methods::Post, - email_exists - ); - - define_resource!( - cfg, - V1_API_ROUTES.account.update_email, - Methods::Post, - set_email - ); + cfg.service(email_exists); + cfg.service(set_email); +// use crate::define_resource; +// use crate::V1_API_ROUTES; +// +// define_resource!( +// cfg, +// V1_API_ROUTES.account.email_exists, +// Methods::Post, +// email_exists +// ); +// +// define_resource!( +// cfg, +// V1_API_ROUTES.account.update_email, +// Methods::Post, +// set_email +// ); } diff --git a/src/api/v1/account/secret.rs b/src/api/v1/account/secret.rs index c125d275..51631dd2 100644 --- a/src/api/v1/account/secret.rs +++ b/src/api/v1/account/secret.rs @@ -29,6 +29,7 @@ pub struct Secret { pub secret: String, } +#[my_codegen::get(path="crate::V1_API_ROUTES.account.get_secret", wrap="crate::CheckLogin")] async fn get_secret( id: Identity, data: web::Data, @@ -46,6 +47,7 @@ async fn get_secret( Ok(HttpResponse::Ok().json(secret)) } +#[my_codegen::post(path="crate::V1_API_ROUTES.account.update_secret", wrap="crate::CheckLogin")] async fn update_user_secret( id: Identity, data: web::Data, @@ -82,20 +84,6 @@ async fn update_user_secret( } pub fn services(cfg: &mut actix_web::web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.account.get_secret, - Methods::ProtectGet, - get_secret - ); - - define_resource!( - cfg, - V1_API_ROUTES.account.update_secret, - Methods::ProtectPost, - update_user_secret - ); + cfg.service(get_secret); + cfg.service(update_user_secret); } diff --git a/src/api/v1/account/username.rs b/src/api/v1/account/username.rs index 186319d5..8f925ee0 100644 --- a/src/api/v1/account/username.rs +++ b/src/api/v1/account/username.rs @@ -20,6 +20,7 @@ use super::{AccountCheckPayload, AccountCheckResp}; use crate::errors::*; use crate::Data; +#[my_codegen::post(path="crate::V1_API_ROUTES.account.username_exists")] async fn username_exists( payload: web::Json, data: web::Data, @@ -43,13 +44,5 @@ async fn username_exists( } pub fn services(cfg: &mut actix_web::web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.account.username_exists, - Methods::Post, - username_exists - ); + cfg.service(username_exists); } diff --git a/src/api/v1/auth.rs b/src/api/v1/auth.rs index 7d282840..0d4560d5 100644 --- a/src/api/v1/auth.rs +++ b/src/api/v1/auth.rs @@ -25,9 +25,6 @@ use serde::{Deserialize, Serialize}; use super::mcaptcha::get_random; use crate::errors::*; use crate::Data; -use crate::*; - -pub const AUTH: routes::Auth = routes::Auth::new(); pub mod routes { pub struct Auth { @@ -50,16 +47,17 @@ pub mod routes { } } -//post!(V1_API_ROUTES.auth.register, signup); pub fn services(cfg: &mut web::ServiceConfig) { // protect_get!(cfg, V1_API_ROUTES.auth.logout, signout); - //cfg.service(signup); + cfg.service(signup); + cfg.service(signin); + cfg.service(signout); - define_resource!(cfg, V1_API_ROUTES.auth.register, Methods::Post, signup); - define_resource!(cfg, V1_API_ROUTES.auth.logout, Methods::ProtectGet, signout); - define_resource!(cfg, V1_API_ROUTES.auth.login, Methods::Post, signin); +// define_resource!(cfg, V1_API_ROUTES.auth.register, Methods::Post, signup); +// define_resource!(cfg, V1_API_ROUTES.auth.logout, Methods::ProtectGet, signout); +// define_resource!(cfg, V1_API_ROUTES.auth.login, Methods::Post, signin); //post!(cfg, V1_API_ROUTES.auth.login, signin); } @@ -82,6 +80,7 @@ pub struct Password { pub password: String, } +#[my_codegen::post(path="crate::V1_API_ROUTES.auth.register")] async fn signup( payload: web::Json, data: web::Data, @@ -127,8 +126,7 @@ async fn signup( .execute(&data.db) .await; } - if res.is_ok() { - break; + if res.is_ok() { break; } else { if let Err(sqlx::Error::Database(err)) = res { if err.code() == Some(Cow::from("23505")) { @@ -149,6 +147,7 @@ async fn signup( Ok(HttpResponse::Ok()) } +#[my_codegen::post(path="crate::V1_API_ROUTES.auth.login")] async fn signin( id: Identity, payload: web::Json, @@ -180,6 +179,7 @@ async fn signin( } } +#[my_codegen::get(path="crate::V1_API_ROUTES.auth.logout", wrap="crate::CheckLogin")] async fn signout(id: Identity) -> impl Responder { if let Some(_) = id.identity() { id.forget(); diff --git a/src/api/v1/mcaptcha/duration.rs b/src/api/v1/mcaptcha/duration.rs index 7f461b20..6ad208ca 100644 --- a/src/api/v1/mcaptcha/duration.rs +++ b/src/api/v1/mcaptcha/duration.rs @@ -44,6 +44,7 @@ pub struct UpdateDuration { pub duration: i32, } +#[my_codegen::post(path="crate::V1_API_ROUTES.duration.update", wrap="crate::CheckLogin")] async fn update_duration( payload: web::Json, data: web::Data, @@ -81,6 +82,7 @@ pub struct GetDuration { pub token: String, } +#[my_codegen::post(path="crate::V1_API_ROUTES.duration.get", wrap="crate::CheckLogin")] async fn get_duration( payload: web::Json, data: web::Data, @@ -101,21 +103,23 @@ async fn get_duration( } pub fn services(cfg: &mut web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.duration.get, - Methods::ProtectPost, - get_duration - ); - define_resource!( - cfg, - V1_API_ROUTES.duration.update, - Methods::ProtectPost, - update_duration - ); + cfg.service(get_duration); + cfg.service(update_duration); +// use crate::define_resource; +// use crate::V1_API_ROUTES; +// +// define_resource!( +// cfg, +// V1_API_ROUTES.duration.get, +// Methods::ProtectPost, +// get_duration +// ); +// define_resource!( +// cfg, +// V1_API_ROUTES.duration.update, +// Methods::ProtectPost, +// update_duration +// ); } #[cfg(test)] diff --git a/src/api/v1/mcaptcha/levels.rs b/src/api/v1/mcaptcha/levels.rs index aa18fc85..d62fd8c4 100644 --- a/src/api/v1/mcaptcha/levels.rs +++ b/src/api/v1/mcaptcha/levels.rs @@ -59,39 +59,15 @@ pub struct AddLevels { } pub fn services(cfg: &mut web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.levels.add, - Methods::ProtectPost, - add_levels - ); - define_resource!( - cfg, - V1_API_ROUTES.levels.update, - Methods::ProtectPost, - update_levels - ); - - define_resource!( - cfg, - V1_API_ROUTES.levels.delete, - Methods::ProtectPost, - delete_levels - ); - - define_resource!( - cfg, - V1_API_ROUTES.levels.get, - Methods::ProtectPost, - get_levels - ); + cfg.service(add_levels); + cfg.service(update_levels); + cfg.service(delete_levels); + cfg.service(get_levels); } // TODO redo mcaptcha table to include levels as json field // so that the whole thing can be added/udpaed in a single stroke +#[my_codegen::post(path="crate::V1_API_ROUTES.levels.add", wrap="crate::CheckLogin")] async fn add_levels( payload: web::Json, data: web::Data, @@ -144,6 +120,7 @@ pub struct UpdateLevels { pub key: String, } +#[my_codegen::post(path="crate::V1_API_ROUTES.levels.update", wrap="crate::CheckLogin")] async fn update_levels( payload: web::Json, data: web::Data, @@ -201,6 +178,7 @@ async fn update_levels( Ok(HttpResponse::Ok()) } +#[my_codegen::post(path="crate::V1_API_ROUTES.levels.delete", wrap="crate::CheckLogin")] async fn delete_levels( payload: web::Json, data: web::Data, @@ -227,6 +205,7 @@ async fn delete_levels( Ok(HttpResponse::Ok()) } +#[my_codegen::post(path="crate::V1_API_ROUTES.levels.get", wrap="crate::CheckLogin")] async fn get_levels( payload: web::Json, data: web::Data, diff --git a/src/api/v1/mcaptcha/mcaptcha.rs b/src/api/v1/mcaptcha/mcaptcha.rs index e08d484d..03622f76 100644 --- a/src/api/v1/mcaptcha/mcaptcha.rs +++ b/src/api/v1/mcaptcha/mcaptcha.rs @@ -43,29 +43,9 @@ pub mod routes { } pub fn services(cfg: &mut web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.mcaptcha.update_key, - Methods::ProtectPost, - update_token - ); - - define_resource!( - cfg, - V1_API_ROUTES.mcaptcha.delete, - Methods::ProtectPost, - delete_mcaptcha - ); - - define_resource!( - cfg, - V1_API_ROUTES.mcaptcha.get_token, - Methods::ProtectPost, - get_token - ); + cfg.service(update_token); + cfg.service(delete_mcaptcha); + cfg.service(get_token); } #[derive(Clone, Debug, Deserialize, Serialize)] @@ -131,6 +111,7 @@ pub async fn add_mcaptcha_util( Ok(resp) } +#[my_codegen::post(path="crate::V1_API_ROUTES.mcaptcha.update_key", wrap="crate::CheckLogin")] async fn update_token( payload: web::Json, data: web::Data, @@ -181,6 +162,7 @@ async fn update_token_helper( Ok(()) } +#[my_codegen::post(path="crate::V1_API_ROUTES.mcaptcha.get_token", wrap="crate::CheckLogin")] async fn get_token( payload: web::Json, data: web::Data, @@ -208,6 +190,7 @@ async fn get_token( Ok(HttpResponse::Ok().json(res)) } +#[my_codegen::post(path="crate::V1_API_ROUTES.mcaptcha.delete", wrap="crate::CheckLogin")] async fn delete_mcaptcha( payload: web::Json, data: web::Data, diff --git a/src/api/v1/meta.rs b/src/api/v1/meta.rs index f3c09455..5a759eab 100644 --- a/src/api/v1/meta.rs +++ b/src/api/v1/meta.rs @@ -45,6 +45,7 @@ pub mod routes { } /// emmits build details of the bninary +#[my_codegen::get(path="crate::V1_API_ROUTES.meta.build_details")] async fn build_details() -> impl Responder { let build = BuildDetails { version: VERSION, @@ -60,6 +61,7 @@ pub struct Health { } /// checks all components of the system +#[my_codegen::get(path="crate::V1_API_ROUTES.meta.health")] async fn health(data: web::Data) -> impl Responder { use sqlx::Connection; @@ -75,16 +77,8 @@ async fn health(data: web::Data) -> impl Responder { } pub fn services(cfg: &mut web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.meta.build_details, - Methods::Get, - build_details - ); - define_resource!(cfg, V1_API_ROUTES.meta.health, Methods::Get, health); + cfg.service(build_details); + cfg.service(health); } #[cfg(test)] diff --git a/src/api/v1/notifications/add.rs b/src/api/v1/notifications/add.rs index 045e37b0..aa3ed37f 100644 --- a/src/api/v1/notifications/add.rs +++ b/src/api/v1/notifications/add.rs @@ -30,6 +30,7 @@ pub struct AddNotification { } /// route handler that adds a notification message +#[my_codegen::post(path="crate::V1_API_ROUTES.notifications.add", wrap="crate::CheckLogin")] pub async fn add_notification( payload: web::Json, data: web::Data, diff --git a/src/api/v1/notifications/get.rs b/src/api/v1/notifications/get.rs index b1d6e7f6..d0d7e96d 100644 --- a/src/api/v1/notifications/get.rs +++ b/src/api/v1/notifications/get.rs @@ -52,6 +52,7 @@ impl From for NotificationResp { } } /// route handler that gets all unread notifications +#[my_codegen::get(path="crate::V1_API_ROUTES.notifications.get", wrap="crate::CheckLogin")] pub async fn get_notification( data: web::Data, id: Identity, diff --git a/src/api/v1/notifications/mod.rs b/src/api/v1/notifications/mod.rs index 39328662..1e8527ea 100644 --- a/src/api/v1/notifications/mod.rs +++ b/src/api/v1/notifications/mod.rs @@ -38,20 +38,6 @@ pub mod routes { } pub fn services(cfg: &mut actix_web::web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; - - define_resource!( - cfg, - V1_API_ROUTES.notifications.add, - Methods::ProtectPost, - add::add_notification - ); - - define_resource!( - cfg, - V1_API_ROUTES.notifications.get, - Methods::ProtectGet, - get::get_notification - ); + cfg.service(add::add_notification); + cfg.service(get::get_notification); } diff --git a/src/api/v1/pow/get_config.rs b/src/api/v1/pow/get_config.rs index 7340fc1a..d35a3453 100644 --- a/src/api/v1/pow/get_config.rs +++ b/src/api/v1/pow/get_config.rs @@ -27,6 +27,7 @@ use super::GetDurationResp; use super::I32Levels; use crate::errors::*; use crate::Data; +use crate::V1_API_ROUTES; //#[derive(Clone, Debug, Deserialize, Serialize)] //pub struct PoWConfig { @@ -42,6 +43,7 @@ pub struct GetConfigPayload { // API keys are mcaptcha actor names /// get PoW configuration for an mcaptcha key +#[my_codegen::post(path = "V1_API_ROUTES.pow.get_config.strip_prefix(V1_API_ROUTES.pow.scope).unwrap()")] pub async fn get_config( payload: web::Json, data: web::Data, @@ -80,6 +82,7 @@ pub async fn get_config( Some(false) => Err(ServiceError::TokenNotFound), None => Err(ServiceError::TokenNotFound), } + } /// Call this when [MCaptcha][m_captcha::MCaptcha] is not in master. /// diff --git a/src/api/v1/pow/mod.rs b/src/api/v1/pow/mod.rs index 29537c9c..888e38bc 100644 --- a/src/api/v1/pow/mod.rs +++ b/src/api/v1/pow/mod.rs @@ -15,7 +15,6 @@ * along with this program. If not, see . */ -use actix_cors::Cors; use actix_web::web; use actix_web::*; @@ -28,28 +27,19 @@ pub use super::mcaptcha::levels::I32Levels; use crate::api::v1::mcaptcha::stats::*; pub fn services(cfg: &mut web::ServiceConfig) { - use crate::define_resource; - use crate::V1_API_ROUTES; + let cors = actix_cors::Cors::default() + .allow_any_origin() + .allowed_methods(vec!["POST"]) + .allow_any_header() + .max_age(3600) + .send_wildcard(); - define_resource!( - cfg, - V1_API_ROUTES.pow.verify_pow, - Methods::CorsAllowAllPost, - verify_pow::verify_pow - ); - - define_resource!( - cfg, - V1_API_ROUTES.pow.get_config, - Methods::CorsAllowAllPost, - get_config::get_config - ); - - define_resource!( - cfg, - V1_API_ROUTES.pow.validate_captcha_token, - Methods::CorsAllowAllPost, - verify_token::validate_captcha_token + cfg.service( + Scope::new(crate::V1_API_ROUTES.pow.scope) + .wrap(cors) + .service(verify_pow::verify_pow) + .service(get_config::get_config) + .service(verify_token::validate_captcha_token), ); } @@ -58,30 +48,48 @@ pub mod routes { pub get_config: &'static str, pub verify_pow: &'static str, pub validate_captcha_token: &'static str, + pub scope: &'static str, } impl PoW { pub const fn new() -> Self { + let scope = "/api/v1/pow/"; PoW { get_config: "/api/v1/pow/config", verify_pow: "/api/v1/pow/verify", validate_captcha_token: "/api/v1/pow/siteverify", + scope, } } } - } -#[allow(non_camel_case_types, missing_docs)] -pub struct post; -impl actix_web::dev::HttpServiceFactory for post { - fn register(self, __config: &mut actix_web::dev::AppService) { - async fn post() -> impl Responder { - HttpResponse::Ok() - } - let __resource = actix_web::Resource::new("/test/post") - .guard(actix_web::guard::Post()) - .to(post); - actix_web::dev::HttpServiceFactory::register(__resource, __config) +//#[allow(non_camel_case_types, missing_docs)] +//pub struct post; +//impl actix_web::dev::HttpServiceFactory for post { +// fn register(self, __config: &mut actix_web::dev::AppService) { +// async fn post() -> impl Responder { +// HttpResponse::Ok() +// } +// let __resource = actix_web::Resource::new("/test/post") +// .guard(actix_web::guard::Post()) +// .to(post); +// actix_web::dev::HttpServiceFactory::register(__resource, __config) +// } +//} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn scope_pow_works() { + let pow = routes::PoW::new(); + assert_eq!(pow.get_config.strip_prefix(pow.scope).unwrap(), "config"); + assert_eq!(pow.verify_pow.strip_prefix(pow.scope).unwrap(), "verify"); + assert_eq!( + pow.validate_captcha_token.strip_prefix(pow.scope).unwrap(), + "siteverify" + ); } } diff --git a/src/api/v1/pow/verify_pow.rs b/src/api/v1/pow/verify_pow.rs index 989bedcd..3fe07152 100644 --- a/src/api/v1/pow/verify_pow.rs +++ b/src/api/v1/pow/verify_pow.rs @@ -23,6 +23,7 @@ use serde::{Deserialize, Serialize}; use super::record_solve; use crate::errors::*; use crate::Data; +use crate::V1_API_ROUTES; #[derive(Clone, Debug, Deserialize, Serialize)] /// validation token that clients receive as proof for submiting @@ -35,6 +36,7 @@ pub struct ValidationToken { /// route handler that verifies PoW and issues a solution token /// if verification is successful +#[my_codegen::post(path = "V1_API_ROUTES.pow.verify_pow.strip_prefix(V1_API_ROUTES.pow.scope).unwrap()")] pub async fn verify_pow( payload: web::Json, data: web::Data, diff --git a/src/api/v1/pow/verify_token.rs b/src/api/v1/pow/verify_token.rs index 121a5513..99861988 100644 --- a/src/api/v1/pow/verify_token.rs +++ b/src/api/v1/pow/verify_token.rs @@ -23,6 +23,7 @@ use serde::{Deserialize, Serialize}; use super::record_confirm; use crate::errors::*; use crate::Data; +use crate::V1_API_ROUTES; #[derive(Clone, Debug, Deserialize, Serialize)] pub struct CaptchaValidateResp { @@ -32,6 +33,7 @@ pub struct CaptchaValidateResp { // API keys are mcaptcha actor names /// route hander that validates a PoW solution token +#[my_codegen::post(path = "V1_API_ROUTES.pow.validate_captcha_token.strip_prefix(V1_API_ROUTES.pow.scope).unwrap()")] pub async fn validate_captcha_token( payload: web::Json, data: web::Data, diff --git a/src/pages/auth/login.rs b/src/pages/auth/login.rs index 0c35790d..55ca4f42 100644 --- a/src/pages/auth/login.rs +++ b/src/pages/auth/login.rs @@ -37,11 +37,8 @@ lazy_static! { static ref INDEX: String = IndexPage::default().render_once().unwrap(); } -const ROUTE: &str = PAGES.auth.login; - -#[get(path="ROUTE")] +#[get(path="PAGES.auth.login")] pub async fn login() -> impl Responder { - struct Foo; HttpResponse::Ok() .content_type("text/html; charset=utf-8") .body(&*INDEX) diff --git a/src/pages/auth/mod.rs b/src/pages/auth/mod.rs index 7a72bc51..fa7bb602 100644 --- a/src/pages/auth/mod.rs +++ b/src/pages/auth/mod.rs @@ -19,12 +19,8 @@ pub mod login; pub mod register; pub fn services(cfg: &mut actix_web::web::ServiceConfig) { - use crate::define_resource; - use crate::PAGES; - cfg.service(login::login); - // define_resource!(cfg, PAGES.auth.login, Methods::Get, login::login); - define_resource!(cfg, PAGES.auth.join, Methods::Get, register::join); + cfg.service(register::join); } pub mod routes { diff --git a/src/pages/auth/register.rs b/src/pages/auth/register.rs index 22c03532..f475f8dc 100644 --- a/src/pages/auth/register.rs +++ b/src/pages/auth/register.rs @@ -35,6 +35,7 @@ lazy_static! { static ref INDEX: String = IndexPage::default().render_once().unwrap(); } +#[my_codegen::get(path = "crate::PAGES.auth.join")] pub async fn join() -> impl Responder { HttpResponse::Ok() .content_type("text/html; charset=utf-8") diff --git a/src/pages/panel/mod.rs b/src/pages/panel/mod.rs index dea76452..316bf106 100644 --- a/src/pages/panel/mod.rs +++ b/src/pages/panel/mod.rs @@ -39,6 +39,7 @@ impl IndexPage { const PAGE: &str = "Dashboard"; +#[my_codegen::get(path = "crate::PAGES.panel.home", wrap = "crate::CheckLogin")] async fn panel(data: web::Data, id: Identity) -> PageResult { let sitekeys = get_list_sitekeys(&data, &id).await?; let body = IndexPage::new(sitekeys).render_once().unwrap(); @@ -48,10 +49,7 @@ async fn panel(data: web::Data, id: Identity) -> PageResult Default for IndexPage<'a> { } } +#[my_codegen::get(path = "crate::PAGES.panel.sitekey.add", wrap = "crate::CheckLogin")] pub async fn add_sitekey() -> impl Responder { HttpResponse::Ok() .content_type("text/html; charset=utf-8") diff --git a/src/pages/panel/sitekey/list.rs b/src/pages/panel/sitekey/list.rs index e7c4a41a..517905b3 100644 --- a/src/pages/panel/sitekey/list.rs +++ b/src/pages/panel/sitekey/list.rs @@ -38,6 +38,7 @@ impl IndexPage { } /// render a list of all sitekeys that a user has +#[my_codegen::get(path = "crate::PAGES.panel.sitekey.list", wrap = "crate::CheckLogin")] pub async fn list_sitekeys( data: web::Data, id: Identity, diff --git a/src/pages/panel/sitekey/mod.rs b/src/pages/panel/sitekey/mod.rs index 22840c34..73d890d5 100644 --- a/src/pages/panel/sitekey/mod.rs +++ b/src/pages/panel/sitekey/mod.rs @@ -38,27 +38,7 @@ pub mod routes { } pub fn services(cfg: &mut actix_web::web::ServiceConfig) { - use crate::define_resource; - use crate::PAGES; - - define_resource!( - cfg, - PAGES.panel.sitekey.add, - Methods::ProtectGet, - add::add_sitekey - ); - - define_resource!( - cfg, - PAGES.panel.sitekey.list, - Methods::ProtectGet, - list::list_sitekeys - ); - - define_resource!( - cfg, - PAGES.panel.sitekey.view, - Methods::ProtectGet, - view::view_sitekey - ); + cfg.service(add::add_sitekey); + cfg.service(list::list_sitekeys); + cfg.service(view::view_sitekey); } diff --git a/src/pages/panel/sitekey/view.rs b/src/pages/panel/sitekey/view.rs index 789f9191..a3e2024b 100644 --- a/src/pages/panel/sitekey/view.rs +++ b/src/pages/panel/sitekey/view.rs @@ -55,6 +55,7 @@ impl IndexPage { } /// route handler that renders individual views for sitekeys +#[my_codegen::get(path = "crate::PAGES.panel.sitekey.view", wrap = "crate::CheckLogin")] pub async fn view_sitekey( path: web::Path, data: web::Data, diff --git a/src/routes.rs b/src/routes.rs index 32e29df6..20b39fcd 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -25,10 +25,6 @@ pub enum Methods { ProtectGet, /// Protected POST handler ProtectPost, - /// CORS allow all orgin GET handler - CorsAllowAllGet, - /// CORS allow all orgin PST handler - CorsAllowAllPost, } /// Defines resoures for [Methods] @@ -67,29 +63,4 @@ macro_rules! define_resource { .to($to), ); }; - - ($cfg:expr, $path:expr, Methods::CorsAllowAllGet, $cors:expr, $to:expr) => { - $cfg.service( - actix_web::web::resource($path) - .wrap($cors) - .guard(actix_web::guard::Get()) - .to($to), - ); - }; - - ($cfg:expr, $path:expr, Methods::CorsAllowAllPost, $to:expr) => { - let cors = Cors::default() - .allow_any_origin() - .allowed_methods(vec!["POST"]) - .allow_any_header() - .max_age(0) - .send_wildcard(); - - $cfg.service( - actix_web::web::resource($path) - .wrap(cors) - .guard(actix_web::guard::Post()) - .to($to), - ); - }; }