Serve frontend code

pull/5/head
~erin 2021-07-18 13:16:00 -04:00
parent 16179f0191
commit 3a264df20f
Signed by: erin
GPG Key ID: DA70E064A8C70F44
7 changed files with 33 additions and 15 deletions

View File

@ -15,5 +15,5 @@ uuid = { version = "0.8.1", features = ["serde", "v4"] }
log = "0.4.0"
env_logger = "0.8.4"
chrono = { version = "0.4.11", features = ["serde"] }
rocket_contrib = { version = "0.4.10", default-features = false, features = ["json"] }
rocket_contrib = { version = "0.4.10", default-features = false, features = ["json", "serve"] }
once_cell = "1.8.0"

View File

@ -25,7 +25,7 @@
<input type="number" id="pin" name="pin" required><br><br>
<label for="newuname">New Username:</label><br>
<input type="number" id="newuname" name="newuname"><br>
<input type="text" id="newuname" name="newuname"><br>
<label for="newpin">New Pin:</label><br>
<input type="number" id="newpin" name="newpin"><br><br>
@ -38,4 +38,4 @@
<div id="incorrect"></div>
</body>
</html>
</html>

View File

@ -60,5 +60,5 @@ const rawResponse = await fetch(`/api/users/change/${uname}/${pin}/${newUname}/$
body: ""
});
document.querySelector("#incorrect").innerHTML = 'Login Changed!'
window.location.replace("http://127.0.0.1:5500/login.html")
window.location.replace("/login.html")
}

View File

@ -36,7 +36,7 @@ form.addEventListener("submit", async function(event) {
})
async function getUname() {
let response = await fetch(`$/api/users/${uname}`);
let response = await fetch(`/api/users/${uname}`);
responseText = await response.text();
return responseText;
}
@ -50,6 +50,6 @@ const rawResponse = await fetch(`/api/register/${uname.toString().toLowerCase()}
body: ""
});
document.querySelector("#taken").innerHTML = 'Registered!'
window.location.replace("http://127.0.0.1:5500/login.html")
window.location.replace("/login.html")
}

View File

@ -1,7 +1,8 @@
extern crate log;
use crate::file_io::{append_json, read_json, write_json};
use rocket::http::{Cookie, Cookies};
use crate::user::User;
use rocket_contrib::json::{Json, JsonValue};
use rocket_contrib::{json::Json, json::JsonValue, serve::StaticFiles};
extern crate sha1;
#[get("/")]
@ -22,7 +23,7 @@ pub fn index() -> &'static str {
}
// Post request to register a user and pin
#[post("/api/register/<name>/<pin>/<pronouns>")]
#[post("/register/<name>/<pin>/<pronouns>")]
pub fn register_user(name: String, pin: i32, pronouns: String) -> JsonValue {
let mut users: Vec<User> = read_json(); // Create an array of users out of parsed json
for i in &users {
@ -46,7 +47,7 @@ pub fn register_user(name: String, pin: i32, pronouns: String) -> JsonValue {
}); // append the user to the vec
// append to the json file
match append_json(&users) {
match append_json(&users[users.len()-1]) {
Err(why) => panic!("couldn't append json: {}", why),
Ok(()) => info!("Succesfully appended to json"),
};
@ -62,8 +63,21 @@ pub fn register_user(name: String, pin: i32, pronouns: String) -> JsonValue {
});
}
fn create_token(name: String, mut users: Vec<User>) -> String {
for i in 0..users.len() {
if users[i].name == name {
users[i].session_token = "token".to_string();
append_json(&users[i]);
info!("succesfully created token for user {}", name);
let token = users[i].session_token.clone();
return token;
};
};
return "NULL".to_string();
}
// Check if pin matches user
#[get("/api/users/<name>/<pin>")]
#[get("/users/<name>/<pin>")]
pub fn check_pin(name: String, pin: i32) -> JsonValue {
let users: Vec<User> = read_json();
let hashed_pin_input = sha1::Sha1::from(&pin.to_string()).digest().to_string();
@ -72,6 +86,7 @@ pub fn check_pin(name: String, pin: i32) -> JsonValue {
if i.name == name.to_lowercase() {
if i.pin_hashed == hashed_pin_input {
info!("pin correct for user {}", i.name);
// Create token for user & set a cookie
return json!({
"status": "ok",
"reason": "pin matches",
@ -96,7 +111,7 @@ pub fn check_pin(name: String, pin: i32) -> JsonValue {
}
// Change a users pin/name
#[post("/api/users/change/<name>/<pin>/<new_name>/<new_pin>")]
#[post("/users/change/<name>/<pin>/<new_name>/<new_pin>")]
pub fn change(name: String, pin: i32, new_name: String, new_pin: i32) -> JsonValue {
let mut users: Vec<User> = read_json();
@ -174,7 +189,7 @@ pub fn change(name: String, pin: i32, new_name: String, new_pin: i32) -> JsonVal
});
}
#[get("/api/users/<name>")]
#[get("/users/<name>")]
pub fn get_user(name: String) -> JsonValue {
let users: Vec<User> = read_json();
let found_user = users

View File

@ -11,7 +11,7 @@ use crate::user::User;
static MESSAGES: Lazy<Mutex<Vec<Message>>> = Lazy::new(|| Mutex::new(Vec::new()));
#[get("/api/message/messages.json")]
#[get("/message/messages.json")]
pub fn fetch_messages() -> Json<Vec<Message>> {
let messages = {
let messages = MESSAGES.lock().unwrap();
@ -87,7 +87,7 @@ fn check_token(message: Json<MessageInput>) -> JsonValue {
}
// Receive a basic message
#[post("/api/message/send", format = "json", data = "<message>")]
#[post("/message/send", format = "json", data = "<message>")]
pub fn send_message(message: Json<MessageInput<'_>>) -> JsonValue {
check_token(message)
}

View File

@ -6,6 +6,7 @@ extern crate log;
extern crate rocket;
#[macro_use]
extern crate rocket_contrib;
use rocket_contrib::serve::StaticFiles;
use rocket::fairing::AdHoc;
@ -25,7 +26,7 @@ fn main() {
rocket::ignite()
.mount(
"/",
"/api",
routes![
auth::index,
auth::get_user,
@ -36,6 +37,8 @@ fn main() {
chat::fetch_messages
],
)
.mount("/", routes![auth::index])
.mount("/", StaticFiles::from("frontend"))
.attach(cors_fairing)
.launch();
}