encode user as base64 and store in localstorage
This commit is contained in:
parent
8acde0f535
commit
7d48ae6eea
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -35,6 +35,7 @@ dependencies = [
|
||||||
name = "app"
|
name = "app"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"base64",
|
||||||
"console_error_panic_hook",
|
"console_error_panic_hook",
|
||||||
"fancy-regex",
|
"fancy-regex",
|
||||||
"getrandom",
|
"getrandom",
|
||||||
|
@ -114,6 +115,12 @@ version = "0.2.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
|
checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "base64"
|
||||||
|
version = "0.13.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "base64ct"
|
name = "base64ct"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -161,6 +168,7 @@ name = "bugspray"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"app",
|
"app",
|
||||||
|
"base64",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"rocket",
|
"rocket",
|
||||||
"rusqlite",
|
"rusqlite",
|
||||||
|
|
|
@ -7,6 +7,7 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
app = { path = "./app" }
|
app = { path = "./app" }
|
||||||
|
base64 = "0.13.0"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
rocket = { version = "0.5.0-rc.1", features = ["json"] }
|
rocket = { version = "0.5.0-rc.1", features = ["json"] }
|
||||||
rusqlite = "0.26.3"
|
rusqlite = "0.26.3"
|
||||||
|
|
|
@ -6,6 +6,7 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
base64 = "0.13.0"
|
||||||
console_error_panic_hook = "0.1.7"
|
console_error_panic_hook = "0.1.7"
|
||||||
fancy-regex = "0.7.1"
|
fancy-regex = "0.7.1"
|
||||||
getrandom = { version = "0.2.4", features = ["js"] }
|
getrandom = { version = "0.2.4", features = ["js"] }
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
mod local_storage;
|
||||||
|
|
||||||
use fancy_regex::Regex;
|
use fancy_regex::Regex;
|
||||||
use pbkdf2::password_hash::PasswordVerifier;
|
use pbkdf2::password_hash::PasswordVerifier;
|
||||||
use reqwasm::http::Request;
|
use reqwasm::http::Request;
|
||||||
|
@ -8,11 +10,7 @@ use sycamore_router::{
|
||||||
};
|
};
|
||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
#[wasm_bindgen]
|
use base64::encode;
|
||||||
extern "C" {
|
|
||||||
#[wasm_bindgen(js_namespace = console)]
|
|
||||||
fn log(s: &str);
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! wasm_import {
|
macro_rules! wasm_import {
|
||||||
($($tt:tt)*) => {
|
($($tt:tt)*) => {
|
||||||
|
@ -24,7 +22,19 @@ macro_rules! wasm_import {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! wasm_import_with_ns {
|
||||||
|
($ns: ident, $($tt:tt)*) => {
|
||||||
|
#[wasm_bindgen]
|
||||||
|
extern "C" {
|
||||||
|
#[wasm_bindgen(js_namespace = $ns)]
|
||||||
|
pub fn $($tt)*;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
wasm_import!(setLocation(href: &str));
|
wasm_import!(setLocation(href: &str));
|
||||||
|
wasm_import_with_ns!(console, log(s: &str));
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Debug, Default, Clone, Serialize, Deserialize)]
|
#[derive(PartialEq, Eq, Debug, Default, Clone, Serialize, Deserialize)]
|
||||||
pub struct Issue {
|
pub struct Issue {
|
||||||
|
@ -398,6 +408,18 @@ pub fn login() -> View<G> {
|
||||||
|
|
||||||
error_wrong_password.set(Pbkdf2.verify_password(password_raw.as_bytes(), &hashed).is_err());
|
error_wrong_password.set(Pbkdf2.verify_password(password_raw.as_bytes(), &hashed).is_err());
|
||||||
|
|
||||||
|
if *error_wrong_password.get() {
|
||||||
|
text.set(String::from("Log in"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let encoded = encode(serde_json::to_string(&user).unwrap().as_bytes());
|
||||||
|
|
||||||
|
local_storage::setItem("token", &encoded);
|
||||||
|
log(&encoded);
|
||||||
|
|
||||||
|
setLocation("/");
|
||||||
|
|
||||||
text.set(String::from("Log in"));
|
text.set(String::from("Log in"));
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
6
app/src/local_storage.rs
Normal file
6
app/src/local_storage.rs
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
|
use crate::wasm_import_with_ns;
|
||||||
|
|
||||||
|
wasm_import_with_ns!(localStorage, setItem(key: &str, value: &str));
|
||||||
|
wasm_import_with_ns!(localStorage, getItem(key: &str) -> Option<String>);
|
Loading…
Reference in a new issue