Skip to content

Commit 3b43c67

Browse files
feat: Deduplicate enforce check (#13)
1 parent 96c5a05 commit 3b43c67

File tree

1 file changed

+27
-45
lines changed

1 file changed

+27
-45
lines changed

src/middleware.rs

+27-45
Original file line numberDiff line numberDiff line change
@@ -118,52 +118,34 @@ where
118118
}
119119
};
120120

121-
let subject = vals.subject.clone();
122-
123-
if !vals.subject.is_empty() {
124-
if let Some(domain) = vals.domain {
125-
let mut lock = cloned_enforcer.write().await;
126-
match lock.enforce_mut(vec![subject, domain, path, action]) {
127-
Ok(true) => {
128-
drop(lock);
129-
Ok(inner.call(req).await?.map(body::Body::new))
130-
}
131-
Ok(false) => {
132-
drop(lock);
133-
Ok(Response::builder()
134-
.status(StatusCode::FORBIDDEN)
135-
.body(body::Body::new(Full::from("403 Forbidden")))
136-
.unwrap())
137-
}
138-
Err(_) => {
139-
drop(lock);
140-
Ok(Response::builder()
141-
.status(StatusCode::BAD_GATEWAY)
142-
.body(body::Body::new(Full::from("502 Bad Gateway")))
143-
.unwrap())
144-
}
145-
}
121+
let subject = vals.subject;
122+
123+
if !subject.is_empty() {
124+
let mut lock = cloned_enforcer.write().await;
125+
let args = if let Some(domain) = vals.domain {
126+
vec![subject, domain, path, action]
146127
} else {
147-
let mut lock = cloned_enforcer.write().await;
148-
match lock.enforce_mut(vec![subject, path, action]) {
149-
Ok(true) => {
150-
drop(lock);
151-
Ok(inner.call(req).await?.map(body::Body::new))
152-
}
153-
Ok(false) => {
154-
drop(lock);
155-
Ok(Response::builder()
156-
.status(StatusCode::FORBIDDEN)
157-
.body(body::Body::new(Full::from("403 Forbidden")))
158-
.unwrap())
159-
}
160-
Err(_) => {
161-
drop(lock);
162-
Ok(Response::builder()
163-
.status(StatusCode::BAD_GATEWAY)
164-
.body(body::Body::new(Full::from("502 Bad Gateway")))
165-
.unwrap())
166-
}
128+
vec![subject, path, action]
129+
};
130+
131+
match lock.enforce_mut(args) {
132+
Ok(true) => {
133+
drop(lock);
134+
Ok(inner.call(req).await?.map(body::Body::new))
135+
}
136+
Ok(false) => {
137+
drop(lock);
138+
Ok(Response::builder()
139+
.status(StatusCode::FORBIDDEN)
140+
.body(body::Body::new(Full::from("403 Forbidden")))
141+
.unwrap())
142+
}
143+
Err(_) => {
144+
drop(lock);
145+
Ok(Response::builder()
146+
.status(StatusCode::BAD_GATEWAY)
147+
.body(body::Body::new(Full::from("502 Bad Gateway")))
148+
.unwrap())
167149
}
168150
}
169151
} else {

0 commit comments

Comments
 (0)