/project
This commit is contained in:
parent
43a9beaef8
commit
dc595a4d87
7 changed files with 50 additions and 10 deletions
|
@ -81,6 +81,7 @@ pub async fn login(
|
|||
let token = encode_token(user.id, &user.username, user.admin).map_err(|e| match e {
|
||||
_ => HttpResponse::InternalServerError().finish(),
|
||||
})?;
|
||||
println!("Token: {}", token);
|
||||
|
||||
id.remember(String::from(token));
|
||||
Ok(HttpResponse::Ok().json(user))
|
||||
|
|
13
project/frontend/Cargo.lock
generated
13
project/frontend/Cargo.lock
generated
|
@ -305,6 +305,7 @@ dependencies = [
|
|||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_json 1.0.52 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"stdweb 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thiserror 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"web_logger 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"yew 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"yew-router 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -312,15 +313,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.15"
|
||||
version = "1.0.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"thiserror-impl 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thiserror-impl 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.15"
|
||||
version = "1.0.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -417,7 +418,7 @@ dependencies = [
|
|||
"serde_json 1.0.52 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"stdweb 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thiserror 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thiserror 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"yew-macro 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -515,8 +516,8 @@ dependencies = [
|
|||
"checksum stdweb-internal-macros 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11"
|
||||
"checksum stdweb-internal-runtime 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0"
|
||||
"checksum syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "0df0eb663f387145cab623dea85b09c2c5b4b0aef44e945d928e682fce71bb03"
|
||||
"checksum thiserror 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "54b3d3d2ff68104100ab257bb6bb0cb26c901abe4bd4ba15961f3bf867924012"
|
||||
"checksum thiserror-impl 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972988113b7715266f91250ddb98070d033c62a011fa0fcc57434a649310dd"
|
||||
"checksum thiserror 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "d12a1dae4add0f0d568eebc7bf142f145ba1aa2544cafb195c76f0f409091b60"
|
||||
"checksum thiserror-impl 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "3f34e0c1caaa462fd840ec6b768946ea1e7842620d94fe29d5b847138f521269"
|
||||
"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
|
||||
"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce"
|
||||
"checksum wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "2cc57ce05287f8376e998cbddfb4c8cb43b84a7ec55cf4551d7c00eef317a47f"
|
||||
|
|
|
@ -14,6 +14,7 @@ log = "0.4.8"
|
|||
web_logger = "0.2.0"
|
||||
serde_json = "1.0.52"
|
||||
anyhow = "1.0.28"
|
||||
thiserror = "1.0.16"
|
||||
|
||||
[[bin]]
|
||||
name = "app"
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
use crate::utils::cookie;
|
||||
use log::{error, info};
|
||||
use serde_json::json;
|
||||
use yew::format::{Json, Text};
|
||||
use yew::format::Json;
|
||||
use yew::prelude::*;
|
||||
use yew::services::fetch::{FetchService, FetchTask, Request, Response};
|
||||
|
||||
use yew::services::fetch::Mode::Cors;
|
||||
|
||||
pub struct LoginComponent {
|
||||
component_link: ComponentLink<LoginComponent>,
|
||||
username: String,
|
||||
|
@ -97,7 +96,10 @@ impl Component for LoginComponent {
|
|||
|
||||
Msg::FetchReady(response) => {
|
||||
self.fetching = false;
|
||||
info!("Fetch complete. Body: {}", response)
|
||||
info!("Login successful: {}", response);
|
||||
cookie::get("thesis")
|
||||
.map(|cookie| info!("Cookie: {}", cookie))
|
||||
.map_err(|e| error!("{}", e));
|
||||
}
|
||||
|
||||
Msg::FetchError => {
|
||||
|
|
0
project/frontend/src/utils/api.rs
Normal file
0
project/frontend/src/utils/api.rs
Normal file
33
project/frontend/src/utils/cookie.rs
Normal file
33
project/frontend/src/utils/cookie.rs
Normal file
|
@ -0,0 +1,33 @@
|
|||
use anyhow::Result;
|
||||
use log::info;
|
||||
use stdweb::{js, unstable::TryInto};
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
pub enum CookieError {
|
||||
#[error("No cookie found for given name")]
|
||||
NotFound,
|
||||
}
|
||||
|
||||
pub fn get(name: &str) -> Result<String> {
|
||||
let cookie_strings = js! { return document.cookie };
|
||||
let cookies: Vec<String> = cookie_strings.try_into()?;
|
||||
cookies
|
||||
.iter()
|
||||
.filter_map(|x| {
|
||||
let name_value: Vec<_> = x.split("=").collect();
|
||||
match name_value.get(0) {
|
||||
None => None,
|
||||
Some(c) => {
|
||||
if *c == name {
|
||||
name_value.get(1).map(|x| (*x).to_owned())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
.pop()
|
||||
.ok_or_else(|| CookieError::NotFound.into())
|
||||
}
|
2
project/frontend/src/utils/mod.rs
Normal file
2
project/frontend/src/utils/mod.rs
Normal file
|
@ -0,0 +1,2 @@
|
|||
pub mod api;
|
||||
pub mod cookie;
|
Loading…
Reference in a new issue