mirror of
https://git.joinsharkey.org/Sharkey/Sharkey.git
synced 2024-11-27 02:03:09 +02:00
アクセストークンは i に統一
トークンの先頭に ! がプリフィックスされているかどうかでユーザー固有のトークンかどうか判別する
This commit is contained in:
parent
a63de6d776
commit
fa591e5c9b
3 changed files with 12 additions and 13 deletions
|
@ -71,4 +71,4 @@ block content
|
||||||
br
|
br
|
||||||
| 上手くいけば、認証したユーザーのアクセストークンがレスポンスとして取得できます。おめでとうございます!
|
| 上手くいけば、認証したユーザーのアクセストークンがレスポンスとして取得できます。おめでとうございます!
|
||||||
|
|
||||||
p アクセストークンを取得できたら、あとは簡単です。REST APIなら、リクエストにアクセストークンを<code>_userkey</code>(「自分のアクセストークンを取得したい場合」の方法で取得したアクセストークンの場合は<code>i</code>)としてパラメータに含めるだけです。
|
p アクセストークンを取得できたら、あとは簡単です。REST APIなら、リクエストにアクセストークンを<code>i</code>としてパラメータに含めるだけです。
|
||||||
|
|
|
@ -20,10 +20,14 @@ export interface IAuthContext {
|
||||||
isSecure: boolean;
|
isSecure: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default (req: express.Request) =>
|
export default (req: express.Request) => new Promise<IAuthContext>(async (resolve, reject) => {
|
||||||
new Promise<IAuthContext>(async (resolve, reject) => {
|
const token = req.body['i'] || req.body['_userkey']; // そのうち_userkeyは削除
|
||||||
const token = req.body['i'];
|
|
||||||
if (token) {
|
if (token == null) {
|
||||||
|
return resolve({ app: null, user: null, isSecure: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (token[0] == '!') {
|
||||||
const user = await User
|
const user = await User
|
||||||
.findOne({ token: token });
|
.findOne({ token: token });
|
||||||
|
|
||||||
|
@ -36,12 +40,9 @@ export default (req: express.Request) =>
|
||||||
user: user,
|
user: user,
|
||||||
isSecure: true
|
isSecure: true
|
||||||
});
|
});
|
||||||
}
|
} else {
|
||||||
|
|
||||||
const userkey = req.headers['userkey'] || req.body['_userkey'];
|
|
||||||
if (userkey) {
|
|
||||||
const userkeyDoc = await Userkey.findOne({
|
const userkeyDoc = await Userkey.findOne({
|
||||||
key: userkey
|
key: token
|
||||||
});
|
});
|
||||||
|
|
||||||
if (userkeyDoc === null) {
|
if (userkeyDoc === null) {
|
||||||
|
@ -56,6 +57,4 @@ export default (req: express.Request) =>
|
||||||
|
|
||||||
return resolve({ app: app, user: user, isSecure: false });
|
return resolve({ app: app, user: user, isSecure: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
return resolve({ app: null, user: null, isSecure: false });
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -48,7 +48,7 @@ export default async (req: express.Request, res: express.Response) => {
|
||||||
const hash = bcrypt.hashSync(password, salt);
|
const hash = bcrypt.hashSync(password, salt);
|
||||||
|
|
||||||
// Generate secret
|
// Generate secret
|
||||||
const secret = rndstr('a-zA-Z0-9', 32);
|
const secret = '!' + rndstr('a-zA-Z0-9', 32);
|
||||||
|
|
||||||
// Create account
|
// Create account
|
||||||
const inserted = await User.insert({
|
const inserted = await User.insert({
|
||||||
|
|
Loading…
Reference in a new issue