@@ -5,15 +5,18 @@ use crate::models::{ApiToken, User};
5
5
use crate :: util:: errors:: { internal, AppError , AppResult , ChainError , Unauthorized } ;
6
6
7
7
#[ derive( Debug ) ]
8
- pub struct AuthenticatedUser ( i32 , Option < i32 > ) ;
8
+ pub struct AuthenticatedUser {
9
+ user_id : i32 ,
10
+ token_id : Option < i32 > ,
11
+ }
9
12
10
13
impl AuthenticatedUser {
11
14
pub fn user_id ( & self ) -> i32 {
12
- self . 0
15
+ self . user_id
13
16
}
14
17
15
18
pub fn api_token_id ( & self ) -> Option < i32 > {
16
- self . 1
19
+ self . token_id
17
20
}
18
21
19
22
pub fn find_user ( & self , conn : & PgConnection ) -> AppResult < User > {
@@ -23,16 +26,22 @@ impl AuthenticatedUser {
23
26
}
24
27
25
28
impl < ' a > UserAuthenticationExt for dyn Request + ' a {
26
- /// Obtain `CurrentUserIds ` for the request or return an `Unauthorized` error
29
+ /// Obtain `AuthenticatedUser ` for the request or return an `Unauthorized` error
27
30
fn authenticate ( & self , conn : & PgConnection ) -> AppResult < AuthenticatedUser > {
28
31
if let Some ( id) = self . extensions ( ) . find :: < TrustedUserId > ( ) {
29
32
// A trusted user_id was provided by a signed cookie (or a test `MockCookieUser`)
30
- Ok ( AuthenticatedUser ( id. 0 , None ) )
33
+ Ok ( AuthenticatedUser {
34
+ user_id : id. 0 ,
35
+ token_id : None ,
36
+ } )
31
37
} else {
32
38
// Otherwise, look for an `Authorization` header on the request
33
39
if let Some ( headers) = self . headers ( ) . find ( "Authorization" ) {
34
40
ApiToken :: find_by_api_token ( conn, headers[ 0 ] )
35
- . map ( |token| AuthenticatedUser ( token. user_id , Some ( token. id ) ) )
41
+ . map ( |token| AuthenticatedUser {
42
+ user_id : token. user_id ,
43
+ token_id : Some ( token. id ) ,
44
+ } )
36
45
// Convert a NotFound (or other database error) into Unauthorized
37
46
. map_err ( |_| Box :: new ( Unauthorized ) as Box < dyn AppError > )
38
47
} else {
0 commit comments