auth0_integration/models/
role.rs1use std::str::FromStr;
2
3use crate::error::AppError;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
10pub enum Role {
11 Admin,
12 SuperAdmin,
13 Worker,
14}
15
16impl Role {
17 pub fn as_auth0_name(&self) -> &str {
19 match self {
20 Role::Admin => "ADMIN",
21 Role::SuperAdmin => "SUPER_ADMIN",
22 Role::Worker => "WORKER",
23 }
24 }
25}
26
27impl FromStr for Role {
28 type Err = AppError;
29
30 fn from_str(s: &str) -> Result<Self, Self::Err> {
34 match s.to_lowercase().as_str() {
35 "admin" => Ok(Role::Admin),
36 "super_admin" => Ok(Role::SuperAdmin),
37 "worker" => Ok(Role::Worker),
38 _ => Err(AppError::InvalidRole(s.to_string())),
39 }
40 }
41}