Add user roles
parent
6328e05b16
commit
49d307a3b6
|
@ -228,9 +228,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crypto-mac"
|
name = "crypto-mac"
|
||||||
version = "0.10.0"
|
version = "0.10.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6"
|
checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
"subtle",
|
"subtle",
|
||||||
|
@ -301,9 +301,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fastrand"
|
name = "fastrand"
|
||||||
version = "1.4.1"
|
version = "1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "77b705829d1e87f762c2df6da140b26af5839e1033aa84aa5f56bb688e4e1bdb"
|
checksum = "b394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"instant",
|
"instant",
|
||||||
]
|
]
|
||||||
|
@ -572,9 +572,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.97"
|
version = "0.2.98"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6"
|
checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
|
@ -807,7 +807,7 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pogchat"
|
name = "pogchat"
|
||||||
version = "0.5.0"
|
version = "0.5.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode",
|
"bincode",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -1062,7 +1062,7 @@ checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.27",
|
"proc-macro2 1.0.27",
|
||||||
"quote 1.0.9",
|
"quote 1.0.9",
|
||||||
"syn 1.0.73",
|
"syn 1.0.74",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1148,9 +1148,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.73"
|
version = "1.0.74"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7"
|
checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.27",
|
"proc-macro2 1.0.27",
|
||||||
"quote 1.0.9",
|
"quote 1.0.9",
|
||||||
|
@ -1178,9 +1178,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tinyvec"
|
name = "tinyvec"
|
||||||
version = "1.2.0"
|
version = "1.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342"
|
checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tinyvec_macros",
|
"tinyvec_macros",
|
||||||
]
|
]
|
||||||
|
@ -1259,9 +1259,9 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "universal-hash"
|
name = "universal-hash"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402"
|
checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
"subtle",
|
"subtle",
|
||||||
|
|
|
@ -77,10 +77,10 @@ Whenever user sends a message, client will send message & token and backend will
|
||||||
- [x] Fail on NULL token
|
- [x] Fail on NULL token
|
||||||
- [x] Pronouns
|
- [x] Pronouns
|
||||||
- [x] Set pronouns
|
- [x] Set pronouns
|
||||||
- [ ] Change pronouns
|
- [x] Change pronouns
|
||||||
- [ ] Multiple sets of pronouns
|
|
||||||
- [ ] Some form of plural support?
|
- [ ] Some form of plural support?
|
||||||
- [ ] User management (banning, etc.)
|
- [ ] User management (banning, etc.)
|
||||||
|
- [ ] User roles (admin, mod, etc.)
|
||||||
- [ ] Blacklist words from chat/names
|
- [ ] Blacklist words from chat/names
|
||||||
- [ ] More advanced chat features
|
- [ ] More advanced chat features
|
||||||
- [x] Different types of message events? eg. default, announcement, command
|
- [x] Different types of message events? eg. default, announcement, command
|
||||||
|
|
22
src/auth.rs
22
src/auth.rs
|
@ -1,7 +1,7 @@
|
||||||
extern crate log;
|
extern crate log;
|
||||||
use crate::file_io::{db_add, db_write, db_read};
|
use crate::file_io::{db_add, db_write, db_read};
|
||||||
use rocket::http::{Cookie, Cookies, SameSite};
|
use rocket::http::{Cookie, Cookies};
|
||||||
use crate::user::User;
|
use crate::user::{User, UserType};
|
||||||
use rocket_contrib::json::{Json, JsonValue};
|
use rocket_contrib::json::{Json, JsonValue};
|
||||||
use random_string::generate;
|
use random_string::generate;
|
||||||
extern crate sha1;
|
extern crate sha1;
|
||||||
|
@ -40,13 +40,14 @@ pub fn register_user(name: String, pin: i32, pronouns: String) -> JsonValue {
|
||||||
}
|
}
|
||||||
|
|
||||||
let pin_hashed = sha1::Sha1::from(&pin.to_string()).digest().to_string(); // hash the pin
|
let pin_hashed = sha1::Sha1::from(&pin.to_string()).digest().to_string(); // hash the pin
|
||||||
|
|
||||||
let new_user: User = User {
|
let new_user: User = User {
|
||||||
name: name.to_string().to_lowercase(),
|
name: name.to_string().to_lowercase(),
|
||||||
pin_hashed: pin_hashed,
|
pin_hashed,
|
||||||
pronouns: pronouns.to_string().to_lowercase(),
|
pronouns: pronouns.to_string().to_lowercase(),
|
||||||
session_token: "NULL".to_string(),
|
session_token: "NULL".to_string(),
|
||||||
}; // append the user to the vec
|
role: UserType::Normal,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// append to the json file
|
// append to the json file
|
||||||
|
@ -409,6 +410,7 @@ pub fn get_user(name: String) -> JsonValue {
|
||||||
"user": {
|
"user": {
|
||||||
"name": user.name,
|
"name": user.name,
|
||||||
"pronouns": user.pronouns,
|
"pronouns": user.pronouns,
|
||||||
|
"role": user.role,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
None => json!({
|
None => json!({
|
||||||
|
@ -417,3 +419,13 @@ pub fn get_user(name: String) -> JsonValue {
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
#[derive(Deserialize, Debug)]
|
||||||
|
pub struct ModerationAction {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* User Management */
|
||||||
|
#[post("/mod", format = "json", data = "<data>")]
|
||||||
|
pub fn moderation_actions(data: Json<ModerationAction<'_>>, mut cookies: Cookies) -> JsonValue {
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
|
@ -9,7 +9,6 @@ use rocket_contrib::json::{Json, JsonValue};
|
||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
use crate::user::User;
|
use crate::user::User;
|
||||||
use std::time::{Duration, SystemTime};
|
|
||||||
|
|
||||||
static MESSAGES: Lazy<Mutex<Vec<Message>>> = Lazy::new(|| Mutex::new(Vec::new()));
|
static MESSAGES: Lazy<Mutex<Vec<Message>>> = Lazy::new(|| Mutex::new(Vec::new()));
|
||||||
|
|
||||||
|
@ -33,9 +32,9 @@ fn create_message(message: Json<MessageInput>, file: &str, user: &User) -> JsonV
|
||||||
// create full message object
|
// create full message object
|
||||||
let message_obj: Message = Message {
|
let message_obj: Message = Message {
|
||||||
id: Uuid::new_v4(),
|
id: Uuid::new_v4(),
|
||||||
|
event_type,
|
||||||
user: user.name.to_owned(),
|
user: user.name.to_owned(),
|
||||||
body: message.body.to_string(),
|
body: message.body.to_string(),
|
||||||
event_type: event_type,
|
|
||||||
created_at: Utc::now(),
|
created_at: Utc::now(),
|
||||||
};
|
};
|
||||||
info!("created mesage: {:?}", message_obj);
|
info!("created mesage: {:?}", message_obj);
|
||||||
|
|
|
@ -97,28 +97,6 @@ pub fn write_json(users_list: &Vec<User>) -> Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
// test sled funtion
|
|
||||||
pub fn test_sled() {
|
|
||||||
// create test user
|
|
||||||
let user = User {
|
|
||||||
name: "erin".to_string(),
|
|
||||||
pin_hashed: "nyaa".to_string(),
|
|
||||||
pronouns: "she/her".to_string(),
|
|
||||||
session_token: "NULL".to_string(),
|
|
||||||
};
|
|
||||||
// open database
|
|
||||||
let db: sled::Db = sled::open("my_db").unwrap();
|
|
||||||
let bytes = bincode::serialize(&user).unwrap();
|
|
||||||
db.insert(&user.name, bytes).unwrap();
|
|
||||||
match db.get(user.name).unwrap() {
|
|
||||||
Some(bytes) => {
|
|
||||||
let read_user: User = bincode::deserialize(&bytes).unwrap();
|
|
||||||
println!("username: {}, pronouns: {}", read_user.name, read_user.pronouns);
|
|
||||||
},
|
|
||||||
None => (),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// add a user to the database
|
// add a user to the database
|
||||||
pub fn db_add(user: &User) {
|
pub fn db_add(user: &User) {
|
||||||
let db: sled::Db = sled::open("users_db").unwrap();
|
let db: sled::Db = sled::open("users_db").unwrap();
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Clone, Serialize, Deserialize, Debug)]
|
||||||
|
pub enum UserType {
|
||||||
|
Normal,
|
||||||
|
Moderator,
|
||||||
|
Admin,
|
||||||
|
}
|
||||||
|
|
||||||
// Struct to store basic user data
|
// Struct to store basic user data
|
||||||
#[derive(Clone, Serialize, Deserialize, Debug)]
|
#[derive(Clone, Serialize, Deserialize, Debug)]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub pin_hashed: String,
|
pub pin_hashed: String,
|
||||||
pub pronouns: String,
|
pub pronouns: String,
|
||||||
#[serde(rename = "sessionToken")]
|
|
||||||
pub session_token: String,
|
pub session_token: String,
|
||||||
|
pub role: UserType,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue