1
- use crate :: controllers:: prelude :: * ;
1
+ use crate :: controllers:: frontend_prelude :: * ;
2
2
3
3
use crate :: github;
4
4
use conduit_cookie:: RequestSession ;
5
+ use failure:: Fail ;
5
6
use oauth2:: { prelude:: * , AuthorizationCode , TokenResponse } ;
6
7
7
8
use crate :: models:: user;
8
9
use crate :: models:: user:: UserNoEmailType ;
9
10
use crate :: models:: { NewUser , User } ;
10
11
use crate :: schema:: users;
11
- use crate :: util:: errors:: { AppError , ReadOnlyMode } ;
12
+ use crate :: util:: errors:: { AppError , ChainError , ReadOnlyMode } ;
12
13
13
14
/// Handles the `GET /authorize_url` route.
14
15
///
@@ -85,7 +86,7 @@ pub fn github_access_token(req: &mut dyn Request) -> AppResult<Response> {
85
86
let session_state = req. session ( ) . remove ( & "github_oauth_state" . to_string ( ) ) ;
86
87
let session_state = session_state. as_ref ( ) . map ( |a| & a[ ..] ) ;
87
88
if Some ( & state[ ..] ) != session_state {
88
- return Err ( cargo_err ( "invalid state parameter" ) ) ;
89
+ return Err ( bad_request ( "invalid state parameter" ) ) ;
89
90
}
90
91
}
91
92
@@ -96,7 +97,8 @@ pub fn github_access_token(req: &mut dyn Request) -> AppResult<Response> {
96
97
. app ( )
97
98
. github
98
99
. exchange_code ( code)
99
- . map_err ( |s| cargo_err ( & s) ) ?;
100
+ . map_err ( |e| e. compat ( ) )
101
+ . chain_error ( || server_error ( "Error obtaining token" ) ) ?;
100
102
let token = token. access_token ( ) ;
101
103
let ghuser = github:: github_api :: < GithubUser > ( req. app ( ) , "/user" , token) ?;
102
104
let user = ghuser. save_to_database ( & token. secret ( ) , & * req. db_conn ( ) ?) ?;
0 commit comments