Add structs and enums in src/auth.rs into seperate file
parent
d13e5cf8ae
commit
36846b2eab
31
src/auth.rs
31
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};
|
use rocket::http::{Cookie, Cookies};
|
||||||
use crate::user::{User, UserType};
|
use crate::user::*;
|
||||||
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;
|
||||||
|
@ -133,12 +133,6 @@ pub fn check_token(name: String, mut cookies: Cookies) -> JsonValue {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// logout event struct
|
|
||||||
#[derive(Deserialize, Debug)]
|
|
||||||
pub struct LogoutEvent {
|
|
||||||
pub name: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Logout API
|
// Logout API
|
||||||
#[post("/logout", format = "json", data = "<info>")]
|
#[post("/logout", format = "json", data = "<info>")]
|
||||||
pub fn logout(info: Json<LogoutEvent>, mut cookies: Cookies) -> JsonValue {
|
pub fn logout(info: Json<LogoutEvent>, mut cookies: Cookies) -> JsonValue {
|
||||||
|
@ -232,14 +226,6 @@ pub fn check_pin(mut cookies: Cookies, name: String, pin: i32) -> JsonValue {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
|
||||||
pub struct ChangeEvent {
|
|
||||||
pub name: String,
|
|
||||||
pub pin: String,
|
|
||||||
pub changed_event: String,
|
|
||||||
pub new_event: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change info about a user
|
// Change info about a user
|
||||||
#[post("/users/change", format = "json", data = "<input>")]
|
#[post("/users/change", format = "json", data = "<input>")]
|
||||||
pub fn change_info(input: Json<ChangeEvent>, mut cookies: Cookies) -> JsonValue {
|
pub fn change_info(input: Json<ChangeEvent>, mut cookies: Cookies) -> JsonValue {
|
||||||
|
@ -420,12 +406,17 @@ pub fn get_user(name: String) -> JsonValue {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
#[derive(Deserialize, Debug)]
|
|
||||||
pub struct ModerationAction {
|
|
||||||
}
|
|
||||||
|
|
||||||
/* User Management */
|
/* User Management */
|
||||||
#[post("/mod", format = "json", data = "<data>")]
|
#[post("/mod", format = "json", data = "<data>")]
|
||||||
pub fn moderation_actions(data: Json<ModerationAction<'_>>, mut cookies: Cookies) -> JsonValue {
|
pub fn moderation_actions(data: Json<ModerationAction<'_>>, mut cookies: Cookies) -> JsonValue {
|
||||||
|
let token = match cookies.get_private("token") {
|
||||||
|
None => {
|
||||||
|
warn!("couldn't get token cookie!");
|
||||||
|
return json!({
|
||||||
|
"status": "fail",
|
||||||
|
"reason": "could not read cookie",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
Some(token) => token,
|
||||||
|
};
|
||||||
}*/
|
}*/
|
||||||
|
|
46
src/user.rs
46
src/user.rs
|
@ -1,5 +1,7 @@
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
/* User Data */
|
||||||
|
// enum of different user types
|
||||||
#[derive(Clone, Serialize, Deserialize, Debug)]
|
#[derive(Clone, Serialize, Deserialize, Debug)]
|
||||||
pub enum UserType {
|
pub enum UserType {
|
||||||
Normal,
|
Normal,
|
||||||
|
@ -10,9 +12,43 @@ pub enum UserType {
|
||||||
// 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, // unique username
|
||||||
pub pin_hashed: String,
|
pub pin_hashed: String, // sha1 hash of the pin
|
||||||
pub pronouns: String,
|
pub pronouns: String, // user's pronouns
|
||||||
pub session_token: String,
|
pub session_token: String, // generated session token
|
||||||
pub role: UserType,
|
pub role: UserType, // type/role of user
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Moderation Data */
|
||||||
|
// enum of different moderator actions
|
||||||
|
#[derive(Deserialize, Debug)]
|
||||||
|
pub enum ModActions {
|
||||||
|
Kick, // Log the user out of their current session
|
||||||
|
Ban, // Remove the user
|
||||||
|
Demote, // Demote a user to a lower role
|
||||||
|
Premote, // Premote a user to a higher role
|
||||||
|
}
|
||||||
|
|
||||||
|
// struct to use for json input
|
||||||
|
#[derive(Deserialize, Debug)]
|
||||||
|
pub struct ModerationAction {
|
||||||
|
pub name: String, // name of the moderator
|
||||||
|
pub action: ModActions, // what action to take
|
||||||
|
pub target: User, // who to take the action on
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Miscellaneous Events */
|
||||||
|
// logout event struct
|
||||||
|
#[derive(Deserialize, Debug)]
|
||||||
|
pub struct LogoutEvent {
|
||||||
|
pub name: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
// change info event struct
|
||||||
|
#[derive(Deserialize, Debug)]
|
||||||
|
pub struct ChangeEvent {
|
||||||
|
pub name: String, // name of the user
|
||||||
|
pub pin: String, // user's pin
|
||||||
|
pub changed_event: String, // which event to change
|
||||||
|
pub new_event: String, // the new value for the event
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue