|
|
@@ -0,0 +1,48 @@
|
|
|
+const {
|
|
|
+ db,
|
|
|
+ waitForDb,
|
|
|
+ READ_PREFERENCE_SECONDARY,
|
|
|
+} = require('../../app/src/infrastructure/mongodb')
|
|
|
+const {
|
|
|
+ hashSecret,
|
|
|
+} = require('../../modules/oauth2-server/app/src/SecretsHelper')
|
|
|
+
|
|
|
+async function main() {
|
|
|
+ await waitForDb()
|
|
|
+ console.log('Hashing client secrets...')
|
|
|
+ await hashSecrets(db.oauthApplications, 'clientSecret')
|
|
|
+ console.log('Hashing access tokens...')
|
|
|
+ await hashSecrets(db.oauthAccessTokens, 'accessToken')
|
|
|
+ console.log('Hashing refresh tokens...')
|
|
|
+ await hashSecrets(db.oauthAccessTokens, 'refreshToken')
|
|
|
+ console.log('Hashing authorization codes...')
|
|
|
+ await hashSecrets(db.oauthAuthorizationCodes, 'authorizationCode')
|
|
|
+}
|
|
|
+
|
|
|
+async function hashSecrets(collection, field) {
|
|
|
+ const cursor = collection.find(
|
|
|
+ {
|
|
|
+ [field]: /^(?!v1\.)/,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ projection: { _id: 1, [field]: 1 },
|
|
|
+ readPreference: READ_PREFERENCE_SECONDARY,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ let hashedCount = 0
|
|
|
+ for await (const doc of cursor) {
|
|
|
+ const hash = hashSecret(doc[field])
|
|
|
+ await collection.updateOne({ _id: doc._id }, { $set: { [field]: hash } })
|
|
|
+ hashedCount++
|
|
|
+ }
|
|
|
+ console.log(`${hashedCount} secrets hashed`)
|
|
|
+}
|
|
|
+
|
|
|
+main()
|
|
|
+ .then(() => {
|
|
|
+ process.exit(0)
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ console.error(err)
|
|
|
+ process.exit(1)
|
|
|
+ })
|