All files / angle-util/src anonymizer.ts

0% Statements 0/46
0% Branches 0/25
0% Functions 0/5
0% Lines 0/46

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92                                                                                                                                                                                       
/**
 * this util module is about to anonymize strings like phone, user name, account no and so on
 * @module angle-util/anonymizer
 */
export default {
  fixMobileNo (phone: number | string): string {
    if (phone) {
      // change phone into string type at first
      phone = phone.toString()
      if (phone.length === 11) {
        // valid mobile length
        let prefix = phone.substring(0, 3)
        let suffix = phone.substring(phone.length - 4)
        return `${prefix}****${suffix}`
      } else {
        return phone
      }
    } else {
      return ''
    }
  },
  fixTelNo (tel: number | string): string {
    // NOTE 保留前3,后4,其他位隐匿
    if (tel) {
      tel = tel.toString()
      if (tel.length >= 8) {
        let prefix = tel.substring(0, 3)
        let suffix = tel.substring(tel.length - 4)
        let anonyLength = tel.length - 7
        return `${prefix}${'*'.repeat(anonyLength)}${suffix}`
      } else {
        return tel
      }
    } else {
      return ''
    }
  },
  fixCardNo (cardNo: number | string): string {
    // NOTE 隐匿倒数第5位至往前共9位内容
    if (cardNo) {
      cardNo = cardNo.toString()
      if (cardNo.length >= 16) {
        const prefix = cardNo.substring(0, cardNo.length - 13)
        const suffix = cardNo.substring(cardNo.length - 4)
        return `${prefix}*********${suffix}`
      } else {
        return cardNo
      }
    } else {
      return ''
    }
  },
  fixCertNo (certNo: number | string): string {
    // NOTE 隐匿倒数第6位至往前共4位内容
    if (certNo) {
      certNo = certNo.toString()
      if (certNo.length >= 15) {
        const prefix = certNo.substring(0, certNo.length - 9)
        const suffix = certNo.substring(certNo.length - 5)
        return `${prefix}****${suffix}`
      } else {
        return certNo
      }
    } else {
      return ''
    }
  },
  fixName (name: string, hideFirst = false): string {
    if (name) {
      if (hideFirst) {
        // 隐藏姓,显示名
        let suffix = name.substring(1)
        return `*${suffix}`
      } else {
        // 隐藏除首尾的其他内容
        if (name.length > 2) {
          let prefix = name[0]
          let suffix = name[name.length - 1]
          let anonyLength = name.length - 2
          return `${prefix}${'*'.repeat(anonyLength)}${suffix}`
        } else if (name.length === 2) {
          return `${name[0]}*`
        } else {
          return name
        }
      }
    } else {
      return ''
    }
  }
}