Browse Source

create method for generating unique token

kaori 4 years ago
parent
commit
cb629ebe87
1 changed files with 17 additions and 1 deletions
  1. 17 1
      src/server/models/password-reset-order.js

+ 17 - 1
src/server/models/password-reset-order.js

@@ -13,7 +13,23 @@ schema.plugin(uniqueValidator);
 class PasswordResetOrder {
 
   static generateOneTimeToken() {
-    // TODO: generate unique token by GW-6802
+    const now = new Date().getTime();
+    const hasher1 = crypto.createHash('sha512');
+    const token = hasher1.update(`gtop${now.toString()}${process.env.SALT_FOR_GTOP_TOKEN}`).digest('base64');
+    return token;
+  }
+
+  static async generateUniqueAccessToken() {
+    let duplicateToken;
+    let generateToken;
+
+    do {
+      generateToken = this.generateOneTimeToken();
+      // eslint-disable-next-line no-await-in-loop
+      duplicateToken = await this.findOne({ $or: { token: generateToken } });
+    } while (duplicateToken != null);
+
+    return generateToken;
   }
 
   static isExpired() {