@@ -55,24 +55,35 @@ router
55
55
auth . token ,
56
56
rp ( {
57
57
uri : `${ endpoint } /authenticated_user` ,
58
- headers : { "Authorization" : `Bearer ${ auth . token } ` }
58
+ headers : { "Authorization" : `Bearer ${ auth . token } ` } ,
59
+ json : true
59
60
} )
60
61
] )
61
62
} )
62
63
. then ( ( [ token , user ] ) => Promise . all ( [
63
- user ,
64
- rp ( {
65
- method : "DELETE" ,
66
- uri : `${ endpoint } /access_tokens/${ token } `
67
- } )
68
- ] )
69
- )
70
- . then ( ( [ user ] ) => {
64
+ user ,
65
+ rp ( {
66
+ method : "DELETE" ,
67
+ uri : `${ endpoint } /access_tokens/${ token } `
68
+ } )
69
+ ] ) )
70
+ . then ( ( [ user ] ) => Promise . all ( [
71
+ user . id ,
72
+ knex . first ( "id" ) . where ( { id : user . id } ) . from ( "users" ) ,
73
+ ] ) )
74
+ . then ( ( [ id , exists ] ) => {
71
75
const token = uuid . v1 ( )
72
- return Promise . all ( [
73
- token ,
74
- knex ( "users" ) . insert ( { id : user . id , token, source : "qiita" } )
75
- ] )
76
+ if ( ! exists ) {
77
+ return Promise . all ( [
78
+ token ,
79
+ knex ( "users" ) . insert ( { id, token, revoked : false } )
80
+ ] )
81
+ } else {
82
+ return Promise . all ( [
83
+ token ,
84
+ knex ( "users" ) . where ( { id} ) . update ( { revoked : false , token} )
85
+ ] )
86
+ }
76
87
} )
77
88
. then ( ( [ token ] ) => {
78
89
ctx . redirect ( `${ ctx . cookies . get ( "callback" ) } ?token=${ token } ` )
@@ -82,7 +93,18 @@ router
82
93
console . error ( err )
83
94
ctx . throw ( 500 )
84
95
} )
85
- await next ( )
96
+ } )
97
+ . delete ( "/auth/token/:token" , async ( ctx , next ) => {
98
+ const { token} = ctx . params
99
+ await knex . first ( "id" , "revoked" ) . where ( "token" , token ) . from ( "users" )
100
+ . then ( user => {
101
+ ctx . assert ( user , 404 )
102
+ ctx . assert ( ! user . revoked , 400 )
103
+ return knex ( "users" ) . where ( { id : user . id } ) . update ( { revoked : true } )
104
+ } )
105
+ . then ( ( ) => {
106
+ ctx . body = { complete : true }
107
+ } )
86
108
} )
87
109
88
110
// Dislike API
0 commit comments