Skip to content

Commit c216965

Browse files
committed
editoast: use UserIdentity to fetch a user by identity
1 parent 5a6ae29 commit c216965

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

editoast/editoast_authz/src/authorizer.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub trait StorageDriver: Clone {
2929

3030
fn get_user_id(
3131
&self,
32-
user_info: &UserInfo,
32+
user_identity: &UserIdentity,
3333
) -> impl Future<Output = Result<Option<i64>, Self::Error>> + Send;
3434

3535
fn get_user_info(
@@ -316,8 +316,11 @@ mod tests {
316316
Ok(removed_roles)
317317
}
318318

319-
async fn get_user_id(&self, user_info: &UserInfo) -> Result<Option<i64>, Self::Error> {
320-
Ok(self.users.lock().unwrap().get(&user_info.identity).copied())
319+
async fn get_user_id(
320+
&self,
321+
user_identity: &UserIdentity,
322+
) -> Result<Option<i64>, Self::Error> {
323+
Ok(self.users.lock().unwrap().get(user_identity).copied())
321324
}
322325

323326
async fn get_user_info(&self, user_id: i64) -> Result<Option<UserInfo>, Self::Error> {

editoast/src/models/auth.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::ops::DerefMut;
44
use diesel::{dsl, prelude::*};
55
use diesel_async::{scoped_futures::ScopedFutureExt as _, RunQueryDsl};
66
use editoast_authz::{
7-
authorizer::{StorageDriver, UserInfo},
7+
authorizer::{StorageDriver, UserIdentity, UserInfo},
88
roles::BuiltinRoleSet,
99
};
1010
use editoast_models::DbConnection;
@@ -38,11 +38,11 @@ impl<B: BuiltinRoleSet + Send + Sync> StorageDriver for PgAuthDriver<B> {
3838
type BuiltinRole = B;
3939
type Error = AuthDriverError;
4040

41-
#[tracing::instrument(skip_all, fields(%user_info), ret(level = Level::DEBUG), err)]
42-
async fn get_user_id(&self, user_info: &UserInfo) -> Result<Option<i64>, Self::Error> {
41+
#[tracing::instrument(skip_all, fields(%user_identity), ret(level = Level::DEBUG), err)]
42+
async fn get_user_id(&self, user_identity: &UserIdentity) -> Result<Option<i64>, Self::Error> {
4343
let id = authn_user::table
4444
.select(authn_user::id)
45-
.filter(authn_user::identity_id.eq(&user_info.identity))
45+
.filter(authn_user::identity_id.eq(&user_identity))
4646
.first::<i64>(self.conn.write().await.deref_mut())
4747
.await
4848
.optional()?;
@@ -71,7 +71,7 @@ impl<B: BuiltinRoleSet + Send + Sync> StorageDriver for PgAuthDriver<B> {
7171
self.conn
7272
.transaction(|conn| {
7373
async move {
74-
let user_id = self.get_user_id(user).await?;
74+
let user_id = self.get_user_id(&user.identity).await?;
7575
match user_id {
7676
Some(user_id) => {
7777
tracing::debug!("user already exists in db");

0 commit comments

Comments
 (0)