Skip to content
This repository was archived by the owner on Nov 5, 2022. It is now read-only.

Commit 569d4ef

Browse files
minor refactor
1 parent 3d124ea commit 569d4ef

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

src/opencdms_api/middleware.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ def get_user(self, username: str) -> Optional[CurrentUserSchema]:
2828
with db_session_scope() as session:
2929
user: models.AuthUser = (
3030
session.query(models.AuthUser)
31-
.filter(models.AuthUser.username == username)
32-
.one_or_none()
31+
.filter(models.AuthUser.username == username)
32+
.one_or_none()
3333
)
34-
return CurrentUserSchema.from_orm(user) if user is not None else None
34+
return CurrentUserSchema.from_orm(
35+
user) if user is not None else None
3536

3637
def authenticate_request(self, request: Request):
3738
authorization_header = request.headers.get("authorization")
@@ -68,7 +69,8 @@ def get_climsoft_role_for_username(self, username: str):
6869
role = None
6970

7071
try:
71-
user_role = session.query(climsoft_models.ClimsoftUser).filter_by(userName=username).one_or_none()
72+
user_role = session.query(climsoft_models.ClimsoftUser).filter_by(
73+
userName=username).one_or_none()
7274
role = user_role.userRole
7375
except Exception as e:
7476
pass
@@ -77,6 +79,11 @@ def get_climsoft_role_for_username(self, username: str):
7779

7880
return role
7981

82+
def has_required_role(self, username, required_role):
83+
return self.get_climsoft_role_for_username(
84+
username
85+
) in required_role
86+
8087
async def __call__(self, scope: Scope, receive: Receive, send: Send):
8188
def extract_resource_from_path(string, sep, start, end):
8289
string = string.split(sep)
@@ -98,14 +105,9 @@ def extract_resource_from_path(string, sep, start, end):
98105
request.method.lower()
99106
)
100107

101-
has_required_role = (
102-
self.get_climsoft_role_for_username(user.username) in required_role
103-
)
104-
if (not required_role) or has_required_role:
108+
if (not required_role) or self.has_required_role(
109+
user.username, required_role
110+
):
105111
await self.app(scope, receive, send)
106112
else:
107113
raise HTTPException(status_code=403)
108-
109-
110-
111-

0 commit comments

Comments
 (0)