firebaseoauth2
Advanced tools
Comparing version
88
index.js
@@ -106,5 +106,5 @@ const express = require("express"); | ||
let response_type = req.body.response_type; | ||
let client_id = req.body.client_id; | ||
let redirect_uri = req.body.redirect_uri; | ||
let response_type = req.body.response_type // 必須 | ||
let client_id = req.body.client_id // 必須 | ||
let redirect_uri = req.body.redirect_uri // 必須 | ||
let scope = req.body.scope; | ||
@@ -119,11 +119,13 @@ let state = req.body.state; | ||
// Buildin Client ならば、自動的にClientを追加する | ||
// | ||
setBuildinClient(uid, client_id, scope, redirect_uri) | ||
.then(function(){ | ||
// Build in | ||
// Build in だった | ||
// authorize_code を作成する | ||
return updateAuthorizeCode(uid, client_id) | ||
}, function(){ | ||
// Build in ではない | ||
// Build in ではない | 必須項目が無い | ||
/* To-Do */ | ||
}) | ||
.then(function(authorize_code){ | ||
// authorize_code を作成した | ||
res.json({ | ||
@@ -134,2 +136,3 @@ status : 'ok', | ||
},function(){ | ||
// 必須項目が無い | ||
res.json({ | ||
@@ -157,5 +160,6 @@ status : 'error', | ||
const client_id = req.body.client_id; | ||
const client_secret = req.body.client_secret | ||
const redirect_uri = req.body.redirect_uri | ||
const client_secret = req.body.client_secret; | ||
@@ -219,12 +223,28 @@ if(!grant_type || !client_id){ | ||
console.log('setBuildinClient'); | ||
return new Promise(function(resolve, reject){ | ||
if(!uid || !client_id || !redirect_uri){ | ||
// 必須項目が無い | ||
reject() | ||
return | ||
} | ||
if(client_id == BuildinClientID){ | ||
FirebaseDb.ref('/oAuth/users/' + uid + '/' + client_id).set({ | ||
scope : scope, | ||
redirect_uri : redirect_uri, | ||
client_secret : BuildinClientSecret | ||
}, function(error){ | ||
resolve() | ||
// ビルドインクライアントならば | ||
// Client を削除する | ||
clearClient(uid, client_id) | ||
.then(function(){ | ||
// 削除に成功した / 存在しなかった | ||
FirebaseDb.ref('/oAuth/users/' + uid + '/' + client_id).set({ | ||
scope : scope, | ||
redirect_uri : redirect_uri, | ||
client_secret : BuildinClientSecret | ||
}, function(error){ | ||
resolve() | ||
}) | ||
}, function(){ | ||
// 削除できなかった | ||
}) | ||
}else{ | ||
// ビルドインではない 何もしない | ||
resolve() | ||
@@ -236,3 +256,3 @@ } | ||
// 指定したクライアントのAuthorizeCodeを更新する | ||
const updateAuthorizeCode = (uid, client_id, redirect_uri) => { | ||
const updateAuthorizeCode = (uid, client_id) => { | ||
return new Promise(function(resolve, reject){ | ||
@@ -242,3 +262,3 @@ if(uid && client_id){ | ||
// 認証コードとして既得する | ||
// 認証コードとして記録する | ||
FirebaseDb.ref('/oAuth/AuthorizeCodes/' + authorize_code).set({ | ||
@@ -259,2 +279,3 @@ uid : uid, | ||
}else{ | ||
// 必須項目が無い | ||
reject() | ||
@@ -293,4 +314,5 @@ } | ||
console.log('getTokenByRefreshToken', refresh_token, client_secret) | ||
return new Promise(function(resolve, reject){ | ||
getClientByRefreshToken() | ||
getClientByRefreshToken(refresh_token) | ||
.then(function(clientInfo){ | ||
@@ -316,2 +338,36 @@ if(clientInfo.client.client_secret == client_secret){ | ||
// Client を削除する | ||
const clearClient = (uid, client_id) => { | ||
return new Promise(function(resolve, reject){ | ||
getClientByUidAndClientId(uid, client_id) | ||
.then(function(client){ | ||
// access_token を削除 | ||
deleteAccessToken(client.access_token) | ||
.then(function(){ | ||
// refresh_token を削除 | ||
return deleteRefreshToken(client.refresh_token) | ||
}) | ||
.then(function(){ | ||
// refresh_token を削除 | ||
return deleteAuthorizeCode(client.refresh_token) | ||
}) | ||
.then(function(){ | ||
// Client を削除する | ||
FirebaseDb.ref('/oAuth/users/' + uid + '/' + client_id).remove() | ||
.then(function(){ | ||
resolve() | ||
}, function(error){ | ||
/** To-Do エラー処理 **/ | ||
resolve() | ||
}) | ||
}) | ||
}, function(){ | ||
// Client が見つからなかった | ||
resolve() | ||
}) | ||
}) | ||
} | ||
const updateToken = (clientInfo) => { | ||
@@ -318,0 +374,0 @@ console.log('updateToken', clientInfo) |
{ | ||
"name": "firebaseoauth2", | ||
"version": "0.3.9", | ||
"version": "0.4.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "indexjs.js", |
15594
11.66%486
11.21%