瀏覽代碼

[web] Add `--append` to `scripts/update_institution_user_saml_ids` (#30851)

* [Add `--append` to `scripts/update_institution_user_saml_ids`
* Added a `--search-regexp` argument

GitOrigin-RevId: e78cd8b61365145d18176a0ee1a4f98ba2cabda6
Miguel Serrano 6 月之前
父節點
當前提交
d161cf6bbc
共有 1 個文件被更改,包括 25 次插入11 次删除
  1. 25 11
      services/web/scripts/update_institution_user_saml_ids.mjs

+ 25 - 11
services/web/scripts/update_institution_user_saml_ids.mjs

@@ -8,16 +8,22 @@ function usage() {
     'Usage: node update_institution_user_saml_ids.mjs -i <institution-id> -s <search> [-r <replace>]'
   )
   console.log(
-    'Performs string replacement on external user IDs for all users in an institution'
+    'Performs string replacement on external user IDs for all users in an institution. A search-and-replace or/and an append operation must be specified.'
   )
   console.log('Options:')
   console.log(
     '  --institution-id, -i                     Institution ID to update'
   )
   console.log('  --search, -s                             String to search for')
+  console.log(
+    '  --search-regexp                          Regular expression to search for (ignored if --search is provided)'
+  )
   console.log(
     '  --replace, -r                            String to replace with (optional, defaults to empty string)'
   )
+  console.log(
+    '  --append, -a                            String to append at the end'
+  )
   console.log(
     '  --dry-run, -d                            Shows changes but does not perform updates'
   )
@@ -31,15 +37,18 @@ const {
   'dry-run': dryRun,
   'institution-id': providerId,
   search,
+  'search-regexp': searchRegexp,
   replace,
+  append,
   help,
 } = minimist(process.argv.slice(2), {
-  string: ['institution-id', 'search', 'replace'],
+  string: ['institution-id', 'search', 'search-regexp', 'replace'],
   boolean: ['dry-run', 'help'],
   alias: {
     'institution-id': 'i',
     search: 's',
     replace: 'r',
+    append: 'a',
     'dry-run': 'd',
     help: 'h',
   },
@@ -50,7 +59,9 @@ const {
 })
 
 async function main() {
-  if (help || !providerId || !search) {
+  const hasSearchOrAppend =
+    Boolean(search) || Boolean(searchRegexp) || Boolean(append)
+  if (help || !providerId || !hasSearchOrAppend) {
     usage()
   }
 
@@ -68,17 +79,20 @@ async function main() {
       u => u.providerId === providerId
     )
 
-    if (
-      !matchingIdentifier ||
-      !matchingIdentifier.externalUserId.includes(search)
-    ) {
+    if (!matchingIdentifier) {
       continue
     }
 
-    const updatedId = matchingIdentifier.externalUserId.replaceAll(
-      search,
-      replace
-    )
+    let updatedId
+    if (search) {
+      updatedId = matchingIdentifier.externalUserId.replaceAll(search, replace)
+    } else if (searchRegexp) {
+      const regexp = new RegExp(searchRegexp, 'g')
+      updatedId = matchingIdentifier.externalUserId.replaceAll(regexp, replace)
+    }
+    if (append) {
+      updatedId = matchingIdentifier.externalUserId + append
+    }
 
     usersToUpdate = usersToUpdate + 1
     console.log(`${user._id},${matchingIdentifier.externalUserId},${updatedId}`)