Skip to content

Commit 2aef219

Browse files
committed
📝 更正了用户权限枚举的实现。
1 parent d7d0ae7 commit 2aef219

File tree

2 files changed

+19
-77
lines changed

2 files changed

+19
-77
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
pub mod marker;
22
pub mod marker_item_link;
33
pub mod marker_linkage;
4+
#[deprecated = "这玩意是毛门写一半不写了的表,本人来继续修之前,这个表没办法用"]
45
pub mod marker_punctuate;

packages/utils/src/types/enums.rs

Lines changed: 18 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use serde::{Deserialize, Serialize};
2-
use std::ops::BitOr;
32
use strum::EnumIter;
43

54
use sea_orm::prelude::*;
@@ -18,7 +17,7 @@ pub enum HiddenFlag {
1817
Spy = 2,
1918
/// 彩蛋
2019
#[sea_orm(num_value = 3)]
21-
Superise = 3,
20+
Suprise = 3,
2221
}
2322

2423
#[derive(
@@ -155,91 +154,33 @@ pub enum SystemActionLogAction {
155154
#[sea_orm(rs_type = "i32", db_type = "Integer")]
156155
pub enum SystemUserRole {
157156
/// 系统管理员
158-
Admin = 2,
157+
Admin = 0,
159158
/// 地图管理员
160-
MapManager = 3,
159+
MapManager = 1,
161160
/// 测试打点员
162-
MapNeigui = 4,
161+
MapNeigui = 2,
163162
/// 地图打点员
164-
MapPunctuate = 5,
163+
MapPunctuate = 3,
165164
/// 地图用户
166-
MapUser = 6,
165+
MapUser = 4,
167166
/// 匿名用户
168-
Visitor = 100,
167+
Visitor = 5,
169168
}
170169

171-
impl From<i32> for SystemUserRole {
172-
fn from(v: i32) -> Self {
173-
match v {
174-
2 => SystemUserRole::Admin,
175-
3 => SystemUserRole::MapManager,
176-
4 => SystemUserRole::MapNeigui,
177-
5 => SystemUserRole::MapPunctuate,
178-
6 => SystemUserRole::MapUser,
179-
100 => SystemUserRole::Visitor,
180-
x if x < 2 => SystemUserRole::Admin,
181-
_ => SystemUserRole::Visitor,
170+
impl SystemUserRole {
171+
fn is_available(self, flag: HiddenFlag) -> bool {
172+
if matches!(flag, HiddenFlag::Visible | HiddenFlag::Suprise) {
173+
return true;
182174
}
183-
}
184-
}
185-
186-
/// `HiddenFlag` 的掩码枚举,从低到高分别分配一个二进制位,用于配合权限等级的掩码计算
187-
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, EnumIter)]
188-
#[repr(u8)]
189-
pub enum HiddenFlagMask {
190-
Visible = 1 << 0,
191-
Hidden = 1 << 1,
192-
Spy = 1 << 2,
193-
Superise = 1 << 3,
194-
}
195-
196-
impl BitOr for HiddenFlagMask {
197-
type Output = u8;
198-
199-
fn bitor(self, rhs: Self) -> Self::Output {
200-
(self as u8) | (rhs as u8)
201-
}
202-
}
203-
204-
impl BitOr<u8> for HiddenFlagMask {
205-
type Output = u8;
206-
207-
fn bitor(self, rhs: u8) -> Self::Output {
208-
(self as u8) | rhs
209-
}
210-
}
211-
212-
impl BitOr<HiddenFlagMask> for u8 {
213-
type Output = u8;
214-
215-
fn bitor(self, rhs: HiddenFlagMask) -> Self::Output {
216-
self | (rhs as u8)
217-
}
218-
}
219175

220-
impl Into<u8> for SystemUserRole {
221-
fn into(self) -> u8 {
222176
match self {
223-
SystemUserRole::Admin => {
224-
HiddenFlagMask::Visible
225-
| HiddenFlagMask::Hidden
226-
| HiddenFlagMask::Spy
227-
| HiddenFlagMask::Superise
228-
} // 1|2|4|8 = 15
229-
SystemUserRole::MapManager => {
230-
HiddenFlagMask::Visible | HiddenFlagMask::Hidden | HiddenFlagMask::Superise
231-
} // 1|2|8 = 11
232-
SystemUserRole::MapNeigui => {
233-
HiddenFlagMask::Visible
234-
| HiddenFlagMask::Hidden
235-
| HiddenFlagMask::Spy
236-
| HiddenFlagMask::Superise
237-
} // 1|2|4|8 = 15
238-
SystemUserRole::MapPunctuate => {
239-
HiddenFlagMask::Visible | HiddenFlagMask::Hidden | HiddenFlagMask::Superise
240-
} // 1|2|8 = 11
241-
SystemUserRole::MapUser => HiddenFlagMask::Visible | HiddenFlagMask::Superise, // 1|8 = 9
242-
SystemUserRole::Visitor => HiddenFlagMask::Visible | HiddenFlagMask::Superise, // 1|8 = 9
177+
SystemUserRole::Admin | SystemUserRole::MapNeigui => {
178+
matches!(flag, HiddenFlag::Hidden | HiddenFlag::Spy)
179+
}
180+
SystemUserRole::MapManager | SystemUserRole::MapPunctuate => {
181+
matches!(flag, HiddenFlag::Hidden)
182+
}
183+
SystemUserRole::MapUser | SystemUserRole::Visitor => false,
243184
}
244185
}
245186
}

0 commit comments

Comments
 (0)