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:: { NewUser , User } ;
8
9
use crate :: schema:: users;
9
- use crate :: util:: errors:: { AppError , ReadOnlyMode } ;
10
+ use crate :: util:: errors:: { AppError , ChainError , ReadOnlyMode } ;
10
11
11
12
/// Handles the `GET /api/private/session/begin` route.
12
13
///
@@ -83,7 +84,7 @@ pub fn authorize(req: &mut dyn Request) -> AppResult<Response> {
83
84
let session_state = req. session ( ) . remove ( & "github_oauth_state" . to_string ( ) ) ;
84
85
let session_state = session_state. as_ref ( ) . map ( |a| & a[ ..] ) ;
85
86
if Some ( & state[ ..] ) != session_state {
86
- return Err ( cargo_err ( "invalid state parameter" ) ) ;
87
+ return Err ( bad_request ( "invalid state parameter" ) ) ;
87
88
}
88
89
}
89
90
@@ -94,7 +95,8 @@ pub fn authorize(req: &mut dyn Request) -> AppResult<Response> {
94
95
. app ( )
95
96
. github
96
97
. exchange_code ( code)
97
- . map_err ( |s| cargo_err ( & s) ) ?;
98
+ . map_err ( |e| e. compat ( ) )
99
+ . chain_error ( || server_error ( "Error obtaining token" ) ) ?;
98
100
let token = token. access_token ( ) ;
99
101
let ghuser = github:: github_api :: < GithubUser > ( req. app ( ) , "/user" , token) ?;
100
102
let user = ghuser. save_to_database ( & token. secret ( ) , & * req. db_conn ( ) ?) ?;
0 commit comments