Skip to content

Commit 496858e

Browse files
authored
Merge pull request #9981 from Turbo87/find-by-token
models/token: Remove sync `find_by_api_token()` fn
2 parents c232a08 + 2c10682 commit 496858e

File tree

4 files changed

+5
-31
lines changed

4 files changed

+5
-31
lines changed

src/auth.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ async fn authenticate_via_token(
214214
let token =
215215
HashedToken::parse(header_value).map_err(|_| InsecurelyGeneratedTokenRevoked::boxed())?;
216216

217-
let token = ApiToken::async_find_by_api_token(conn, &token)
217+
let token = ApiToken::find_by_api_token(conn, &token)
218218
.await
219219
.map_err(|e| {
220220
let cause = format!("invalid token caused by {e}");

src/bin/crates-admin/verify_token.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> {
2121
.context("Failed to connect to the database")?;
2222

2323
let token = HashedToken::parse(&opts.api_token)?;
24-
let token = ApiToken::async_find_by_api_token(&mut conn, &token).await?;
24+
let token = ApiToken::find_by_api_token(&mut conn, &token).await?;
2525
let user = User::async_find(&mut conn, token.user_id).await?;
2626
println!("The token belongs to user {}", user.gh_login);
2727
Ok(())

src/models/token.rs

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -69,32 +69,7 @@ impl ApiToken {
6969
})
7070
}
7171

72-
pub fn find_by_api_token(conn: &mut impl Conn, token: &HashedToken) -> QueryResult<ApiToken> {
73-
use diesel::RunQueryDsl;
74-
use diesel::{dsl::now, update};
75-
76-
let tokens = api_tokens::table
77-
.filter(api_tokens::revoked.eq(false))
78-
.filter(
79-
api_tokens::expired_at
80-
.is_null()
81-
.or(api_tokens::expired_at.gt(now)),
82-
)
83-
.filter(api_tokens::token.eq(token));
84-
85-
// If the database is in read only mode, we can't update last_used_at.
86-
// Try updating in a new transaction, if that fails, fall back to reading
87-
conn.transaction(|conn| {
88-
update(tokens)
89-
.set(api_tokens::last_used_at.eq(now.nullable()))
90-
.returning(ApiToken::as_returning())
91-
.get_result(conn)
92-
})
93-
.or_else(|_| tokens.select(ApiToken::as_select()).first(conn))
94-
.map_err(Into::into)
95-
}
96-
97-
pub async fn async_find_by_api_token(
72+
pub async fn find_by_api_token(
9873
conn: &mut AsyncPgConnection,
9974
token: &HashedToken,
10075
) -> QueryResult<ApiToken> {

src/tests/user.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ async fn updating_existing_user_doesnt_change_api_token() {
3636

3737
// Use the original API token to find the now updated user
3838
let hashed_token = assert_ok!(HashedToken::parse(token.expose_secret()));
39-
let mut conn = app.db_conn();
40-
let api_token = assert_ok!(ApiToken::find_by_api_token(&mut conn, &hashed_token));
41-
let user = assert_ok!(User::find(&mut conn, api_token.user_id));
39+
let api_token = assert_ok!(ApiToken::find_by_api_token(&mut conn, &hashed_token).await);
40+
let user = assert_ok!(User::async_find(&mut conn, api_token.user_id).await);
4241

4342
assert_eq!(user.gh_login, "bar");
4443
assert_eq!(user.gh_access_token, "bar_token");

0 commit comments

Comments
 (0)