Revamed auth system

This commit is contained in:
2025-02-07 15:59:50 +01:00
parent 07493b83a5
commit 31aa9dc066
13 changed files with 118 additions and 59 deletions

View File

@@ -11,7 +11,7 @@ use crate::{
auth::{AuthError, Permissions},
database::model::Member as DbMember,
model::{
member::{Groups, Name, SwimGroups},
member::{Groups, Name, Roles},
Member,
},
util::convert_vec,
@@ -119,7 +119,7 @@ struct Row {
#[serde(rename = "E-mail")]
email: String,
#[serde(rename = "Verenigingssporten")]
swim_groups: String,
groups: String,
#[serde(rename = "Diploma dropdown 1")]
diploma: Option<String>,
}
@@ -164,22 +164,22 @@ impl Row {
members
}
fn swim_groups_parsed(&self) -> SwimGroups {
let mut swim_groups: Vec<String> = Vec::new();
fn groups_parsed(&self) -> Groups {
let mut groups: Vec<String> = Vec::new();
let group_parts: Vec<&str> = self.swim_groups.split(", ").collect();
let group_parts: Vec<&str> = self.groups.split(", ").collect();
for group in group_parts {
let hour_parts: Vec<&str> = group.split(" - ").collect();
if let Some(group) = hour_parts.get(1) {
swim_groups.push(group.to_uppercase())
groups.push(group.to_uppercase())
}
}
let swim_groups_string = swim_groups.join("|");
let groups_string = groups.join("|");
bitflags::parser::from_str(&swim_groups_string).unwrap_or(SwimGroups::empty())
bitflags::parser::from_str(&groups_string).unwrap_or(Groups::empty())
}
}
@@ -201,8 +201,8 @@ impl Into<Member> for Row {
name,
registration_token: None,
diploma: self.diploma.clone(),
swim_groups: self.swim_groups_parsed(),
groups: Groups::empty(),
groups: self.groups_parsed(),
roles: Roles::MEMBER,
}
}
}
@@ -264,8 +264,8 @@ fn generate_diff(members_new: Vec<Member>, members_old: Vec<Member>) -> MembersD
name: new_member.name.clone(),
registration_token: old_member.registration_token,
diploma: new_member.diploma.clone(),
swim_groups: new_member.swim_groups.clone(),
groups: old_member.groups,
groups: new_member.groups,
roles: old_member.roles,
})
} else {
members_remove.push(old_member);